Две семьи. Анимации. Позиция.

техническая поддержка по Construct 2

Сообщение Две семьи. Анимации. Позиция.
» 10 июл 2018, 08:53

Узнал про существование такой замечательной сущности как Family. И решил переделать поведение враждебных персонажей, переведя их всех в семью (чтобы не дублировать логику для каждого вида, а использовать только один код).
Однако переход на Family не оказался легким и возникло несколько фундаментальных проблем, которые я не смог решить самостоятельно.

Что из себя представляет персонаж:
база - спрайт, физический объект, который взаимодействует со всеми прочими игровыми базисами;
арт - спрайт с анимациями, который всегда привязан к позиции соответствующей базы и меняет свою анимацию в зависимости от ситуации.

Семьи:
Сделал две семьи, одну для базисов, другую для артов.
В семье базисов - три базиса.
В семье артов - три арта.

Контейнеры:
Для каждого объекта базис, сделал контейнер и положил в него соответствующий арт.
Контейнер 1 (базис 1, арт 1).
Контейнер 2 (базис 2, арт 2).
Контейнер 3 (базис 3, арт 3).
Сделано для того, чтобы размещать на лэйауте только базисы, а соответствующий арт создавался самостоятельно для каждой копии. Ну и для удобства удаления во время исполнения кода.

Проблемы:
Проблема с которой я столкнулся - привязка арта (семья 2) к позиции базиса (семья 1).
При обычном family2 set position to family 1, все первые инстансы анимации привязываются к первой базе, все вторые инстансы анимаций ко второй базе.
Это показано в примере.
При этом, в "настоящем" проекте используется абсолютно такая же система и там все работает. Единственное отличие, что в каждой семье всего по 1му объекту.
 
Изображение

Пробовал сделать черед UID, но как-то не вышло.

Вопрос: Как сделать так, чтобы для любого объекта или его копии из Family 1, создавался связанный с ним в контейнер объект из Family 2, а также чтобы объект из Family 2 всегда привязывался к позиции объекта из Family 1, для которого был создан.

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

Family.capx
(182.46 КБ) Скачиваний: 4
Аватара пользователя

Участник
Сообщений: 24
Я тут с 16 ноя 2012
Репутация 0 [ ? ]

Сообщение Две семьи. Анимации. Позиция.
» 10 июл 2018, 09:58

Rikushi, когда ты используешь семью, то все действия которые к ней применяются - применяются сразу для всех копий, как к одному. то есть система не может понять, кому конкретно привязывать арт и к какой базе, поэтому и вяжет ее к одному спрайту

чтобы выбрать какой копии нужно привязать арт - нужно прописать отдельное событие для привязки каждого арта к базе своей копии

вот переделал:

Family_fix.capx
(183.84 КБ) Скачиваний: 5

еще. если ты используешь контейнер, то не следует копировать и размещать на уровне сразу все объекты контейнера, так как система автоматически создает недостающие спрайты контейнера. поэтому лучше - убирать эти спрайты на другой лайоут. сделай чтото типа хранилища и туда помещай объекты контейнера, а на самом уровне игры - размещай только базу! :acute:
Аватара пользователя

Администратор
Сообщений: 6329
Я тут с 05 сен 2012
Двиг: Construct2
Лицензия: Personal
VK: gabrielsailergray
Репутация 448 [ ? ]

Сообщение Две семьи. Анимации. Позиция.
» 10 июл 2018, 12:12

Способ указанный в "фиксе" я уже применял, до того как создать вторую семью.
Меня интересовала именно возможность использования второй семьи для отдачи указаний всем арт объектам, чтобы свести к минимум ручную работу при добавлении новых персонажей.
Но самым важным было, конечно же, использования второй семьи для назначения анимаций. Поскольку у меня планируется не менее 30ти персонажей, и для каждого не менее 10ти анимаций. И делать 300 ивентов только для назначения анимации, задача не только трудоемкая и скучная, но еще и повышает вероятность возникновения ошибок и увеличивает сложность дебага.

В общем получилось реализовать желаемое, но способом я несколько недоволен. А именно не получается напикать правильных объектов, для взаимодействия.
Сделал через введение дополнительной переменной для арта, куда передаю значение параметра базиса. В случае "примера" это работает достаточно сносно, однако в случае "боевого" проекта, где за смену анимаций отвечают от десяти и более переменных, удвоение их количества приведет к серьезной путанице.
Как бы реализовать смену анимации, используя параметры только базиса?

Family.capx
(182.68 КБ) Скачиваний: 4
Аватара пользователя

Участник
Сообщений: 24
Я тут с 16 ноя 2012
Репутация 0 [ ? ]

Сообщение Две семьи. Анимации. Позиция.
» 12 июл 2018, 06:46

Сделал эталонный пример того, как я хочу чтоб все это работало (в примере работает не корректно).

Family.capx
(190.36 КБ) Скачиваний: 4


У base есть переменная "currentAnimation", куда я задаю значение анимации, которая должна проигрываться.
В примере это значение отображается корректно для каждого юнита (смотрел в дебаг режиме разумеется).

У art есть переменная baseUID куда я задаю значение base.UID, при создании спрайта анимации. Т.е. base.UID и значение art.baseUID совпадают для созданных друг для друга спрайтов (этот функционал работает корректно).

Однако при назначении конкретному арт спрайту, конкретной анимации, происходит полный раздрай. Кто может объяснить, как правильно задать нужному арт спрайту нужное значение анимации?
Аватара пользователя

Участник
Сообщений: 24
Я тут с 16 ноя 2012
Репутация 0 [ ? ]

Сообщение Две семьи. Анимации. Позиция.
» 12 июл 2018, 06:52

Хм. Разобрался самостоятельно, методом тыка. Результатами можете пользоваться. Считаю, что такой способ идеален для создания множества юнитов с различным, комплексным поведением и наличием множества анимаций.

Family.capx
(190.46 КБ) Скачиваний: 8
Аватара пользователя

Участник
Сообщений: 24
Я тут с 16 ноя 2012
Репутация 0 [ ? ]

Сообщение Две семьи. Анимации. Позиция.
» 12 июл 2018, 17:21

Вощм ребяты, опять у меня возникло непонимание. На этот раз с состоянием "Trigger once".

Хочу, чтобы когда база принимала значение анимации, эта анимация проигрывалась только единожды и остановилась на последнем фрейме.

В примере, назначаю анимацию на mouse click.

С триггером работает только для первого инстанса. Все остальные продолжают проигрывать анимацию.
Луп для анимации стоит на no. Но так как событие длительное (сравнение значения переменной), то это не имеет значения.

Ищу помощи в разрешении этого вопроса.

Family.capx
(196.11 КБ) Скачиваний: 6
Аватара пользователя

Участник
Сообщений: 24
Я тут с 16 ноя 2012
Репутация 0 [ ? ]

Сообщение Две семьи. Анимации. Позиция.
» 12 июл 2018, 17:55

Rikushi писал(а):способ идеален для создания множества юнитов с различным, комплексным поведением

Пока у тебя одно соединение - это не комплексное. Я был бы рад избавиться от проверок через цикл и условия, которые выглядят как лишняя работа, к тому же реализуются через медленный ES. Повесить на юниты ещё несколько манипуляторов и лист раздуется кратно, т.к. все соединения придётся делить на пары и привязывать в отдельных циклах.

И ты не можешь просто взять и назначить анимацию через цикл. Используй функцию. Даже платформ назначен неправильно - обрати внимание, у поведения есть специальные триггеры для анимации.
Изображение
Аватара пользователя

Участник
Сообщений: 882
Я тут с 31 май 2017
Репутация 185 [ ? ]

Сообщение Две семьи. Анимации. Позиция.
» 12 июл 2018, 18:03

repkino, не совсем понимаю, что написано в посте, выглядит как гуглоперевод.
If you are using google translate, so please better wright on english. I'm just don't undartand any sentence.

Rikushi писал(а):Вощм ребяты, опять у меня возникло непонимание. На этот раз с состоянием "Trigger once".

Разобрался, помогли тут: https://www.construct.net/ru/forum/cons ... Post942618
Аватара пользователя

Участник
Сообщений: 24
Я тут с 16 ноя 2012
Репутация 0 [ ? ]

Сообщение Две семьи. Анимации. Позиция.
» 12 июл 2018, 18:19

Rikushi,
>что-то умничает насчет инглиша
>wright
:stop:
Аватара пользователя

Игродел
Сообщений: 1176
Я тут с 06 июл 2015
Репутация 295 [ ? ]

Сообщение Две семьи. Анимации. Позиция.
» 12 июл 2018, 18:29

Bishop, что не так?
 
Изображение


Яж не говорю, что я лучше напишу на английском, я говорю, что английский я пойму лучше чем гуглоперевод с него.
Аватара пользователя

Участник
Сообщений: 24
Я тут с 16 ноя 2012
Репутация 0 [ ? ]



Вернуться в Вопрос-Ответ по Construct 2

Сейчас эту тему просматривают

Зарегистрированные пользователи: нет зарегистрированных пользователей

Наверх