4 / 4 / 1
Регистрация: 24.05.2015
Сообщений: 84

Instantiate объектов. Как НЕ создавать копии если на спавнах уже есть объекты?

05.11.2016, 17:44. Показов 4056. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть несколько пустых GameObject's. Есть префабы двух объектов. Пытаюсь их клонировать на сцену. Потом задача для игрока стоит перетягивать объекты в определенные ячейки.
Instantiate объектов. Как НЕ создавать копии если на спавнах уже есть объекты?

Если объект покидает район пустого GameObject то на его месте появляется новый клон. У меня в коде что-то не так, ибо дубликаты появляются all time и не важно есть там уже такие же объекты или нету.

Вот мой код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 public GameObject[] Shapes;
 
    void Start () {
        int temp1 = Random.Range(0, 2);
        GameObject Shape = Instantiate(Shapes[temp1], gameObject.transform.position, gameObject.transform.rotation) as GameObject;
    }
    
    void Update () {
        int temp1 = Random.Range(0, 2);
        if (gameObject.transform.position != Shapes[0].transform.position && gameObject.transform.position != Shapes[1].transform.position)
        {
            GameObject Shape = Instantiate(Shapes[temp1], gameObject.transform.position, gameObject.transform.rotation) as GameObject;
        }
    }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.11.2016, 17:44
Ответы с готовыми решениями:

Как создавать объекты из XML файла, если каких то атрибутов может не быть?
Создаю объекты из XML файла: List<Terminal> terminals = new List<Terminal>(); foreach (XmlNode terminal in...

Как обратится к форме 1 которая у нас уже есть, а не создавать новую?
Вот с такой проблемой встретился: Мы имеем форму 1 и форму 2. При нажатии в форме 1 на кнопочку делаем такой код: this.Hide(); ...

Есть ли смысл помечать функции как inline, если их прототип уже есть в .h файле?
Есть ли смысл помечать функции как inline, если их прототип уже есть в .h файле? Функции в одну строчку, сразу в ретарне вычисляет...

4
58 / 57 / 15
Регистрация: 15.09.2012
Сообщений: 557
05.11.2016, 21:24
мысли логично, если создаются - значить условие
C#
1
gameObject.transform.position != Shapes[0].transform.position && gameObject.transform.position != Shapes[1].transform.position
всегда верно.
И обратно, чтобы не создавались постоянно - условие не должно всегда быть истинным.
Если не понятно - советую или начать с чего-то проще, или не заниматься программированием.
0
4 / 4 / 1
Регистрация: 24.05.2015
Сообщений: 84
05.11.2016, 22:08  [ТС]
Они по идее должны создаваться по координатам спавнов. Но почему-то (не пойму по чему) их координаты отличаются от координат спавна (с 2д работать только начал, в 3д режиме такой бы проблемы не было). И почему условие верно, если объекты по идеи должны создаваться в позиции спавнов. Это же как раз логично, что если позиция спавна не равна позиции объекта, то беж когда объекта нет на месте (когда его оттянули) то появляется новый объект, иначе условие не выполняется и спавна новеньких нет. Чего я не понимаю?
0
58 / 57 / 15
Регистрация: 15.09.2012
Сообщений: 557
09.11.2016, 10:09
Hananas, что я вижу - есть набор исходных обьектов Shapes, которые видимо назначены в инспекторе. У них есть определенные позиции. В Start создается случайный обьект из набора исходных обьектов из координатами текущего обьекта.
Далее проверяется позиция текущего обьекта (которая по скрипту неизвестна) из позицией нулевого и первого обьекта из массива исходных обьектов (по скрипту позиции которых также не известны).
Вопрос. Как здесь помочь? - ничего не известно. Код работает верно - позиция текущего обьекта не совпадает с позицией нулевого и первого исходных обьектов и по этому каждый фрейм создается новый обьект, ссылка на который записывается в переменную Shape.
1
 Аватар для Cr0c
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
09.11.2016, 19:10
А с чего такое мнение, что флоаты можно сравнивать равенством? Это плохая практика. Если сравнивать, то совпадение в диапазоне надо использовать.
Опять же - коллайдеры есть? Ригидбоди есть? Триггеры есть?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.11.2016, 19:10
Помогаю со студенческими работами здесь

Есть ли в C# функции и если да, то как их создавать
Только начал изучать C#, т.к. я перешел из другого языка, который был мне гораздо удобнее, то захотел подводить некоторые C# комманды под...

Отображение формы вместо запуска копии приложения, если приложение уже запущенно
Столкнулся с проблемой. Есть программа, сделал чтобы при сворачивании она не отображалась в трее и через alt+tab, её можно найти только в...

Не создавать запись в БД если она уже существует а просто обновить
Доброго всем дня. Ситуация такая, есть БД MSSQL и php скрипт добавления данных Задача в следующем, как реализовать так чтобы, если...

Как добавить или обновить строку, если уже есть
Добрый день, как добавить строку, если ее нет или обновить если существует. Проверка будет выполняться не по ПримариКей, а по двум или...

Как изменить datatype столбца, если в нем уже есть значения
В базе данных NorthWind нужно значения в столбце EmployeeID заменить на значения столбца LastName. Мне мешает то, что в первом значения...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

Новые блоги и статьи
Вопросы на собеседованиях по микросервисам
ArchitectMsa 27.03.2025
Работодатели ищут не просто разработчиков, знающих базовые концепции, а специалистов, разбирающихся в тонкостях масштабирования, отказоустойчивости и производительности. Сейчас на первый план выходят. . .
Взаимодействие Python с REST API
py-thonny 27.03.2025
REST API - это архитектурный стиль взаимодействия компонентов распределённого приложения в сети. Python располагает функциональным набором инструментов для работы с REST API и основная библиотека для. . .
sshd restrictions, ssh access limitations
jigi33 26.03.2025
sshd restrictions | ssh access limitations рестрикции доступа на сервер sshd статья: https:/ / www. golinuxcloud. com/ restrict-allow-ssh-certain-users-groups-rhel
Компиляция C++ с Clang API
NullReferenced 24.03.2025
Компиляторы обычно воспринимаются как черные ящики, которые превращают исходный код в исполняемые файлы. Мы запускаем компилятор командой в терминале, и вуаля — получаем бинарник. Но что если нужно. . .
Многопоточное программировани­е в C#: Класс Thread
UnmanagedCoder 24.03.2025
Когда запускается приложение на компьютере, операционная система создаёт для него процесс - виртуальное адресное пространство. В C# этот процесс изначально получает один поток выполнения — главный. . .
SwiftUI Data Flow: Передача данных между представлениями
mobDevWorks 23.03.2025
При первом знакомстве со SwiftUI кажется, что фреймворк предлагает избыточное количество механизмов для передачи данных: @State, @Binding, @StateObject, @ObservedObject, @EnvironmentObject и другие. . . .
Моки в Java: Сравниваем Mockito, EasyMock, JMockit
Javaican 23.03.2025
Как протестировать класс, который зависит от других сложных компонентов, таких как базы данных, веб-сервисы или другие классы, с которыми и так непросто работать в тестовом окружении? Для этого и. . .
Архитектурные паттерны микросервисов: ТОП-10 шаблонов
ArchitectMsa 22.03.2025
Популярность микросервисной архитектуры объясняется множеством важных преимуществ. К примеру, она позволяет командам разработчиков работать независимо друг от друга, используя различные технологии и. . .
Оптимизация рендеринга в Unity: Сортировка миллиона спрайтов
GameUnited 22.03.2025
Помните, когда наличие сотни спрайтов в игре приводило к существенному падению производительности? Время таких ограничений уходит в прошлое. Сегодня геймдев сталкивается с задачами совершенно иного. . .
Образование и практика
Igor3D 21.03.2025
Добрый день А вот каково качество/ эффективность ВУЗовского образования? Аналитическая геометрия изучается в первом семестре и считается довольно легким курсом, что вполне справедливо. Ну хорошо,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru