appex | Дата: Среда, 06 Мая 2015, 02:24 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| Я не совсем вьезду где мне писать код.
Есть турель. Есть паук.
Турель стреляет в паука, паук получает урон. Паук идет к турели и если он рядом, то он бьет турель.
На каждое действие присутствует анимация. Реализована через animator.
Допустим в скрипте (spider_ai) который привязан к пауку мы считаем, что если расстояние до турели > 10, то устанавливаем скорость паука в 1. На это реагирует Animator и включает анимацию Walk. Вот паук идет-идет и ... приходит. О том, что он пришел нам сообщил все тот же скрипт (spider_ai). Скрипт сбросил скорость на 0 и сказал аниматору, что мол ты можешь атаковать бро. Аниматор понял и начал атаковать.Но, при атаке нам следует сообщить турели о том, что ее собственно атакуют, для этого мы в spider_ai достанем скрипт turret_ai привязанный к турели и вызовем метод send_damage, казалось бы, что все замечательно.
Но по факту у паука есть анимация и согласно ей урон турели он должен нанести где-то на середине этой анимацией, а не сразу. Тут я обнаружил, что есть некие Behaviurs у State которые в принципе позволяют реализовать "отложенный" вызов send_damage во время анимации, написал я это и смотрю и думаю...кажется это гавнокод и жесткое нарушение логики и вообще взрыв мозга. Потому что определение расстояния/поиск цели/возможность атаки у нас в mob_ai , а сам дамаг посылается в обработчике аниматора.
Подумалось, что можно в update получать текущий State у Animator и работать с текущим состоянием, но кажется это какая-то чушь. Можно еще использовать Invoke, но что-то мне подсказывает, что это так же не очень корректно.
Как это все организуют нормальные люди? Я в геймдеве ну полное дно)
|
|
| |
beril | Дата: Среда, 06 Мая 2015, 04:34 | Сообщение # 2 |
Я не ленивый, я — энергосберегающий
Сейчас нет на сайте
| Цитата appex ( ) н должен нанести где-то на середине этой анимацией, а не сразу Animation Curves and Events
Накодил? Убери за собой! Инвентарь в Unity(UI) Инвентарь в Unity(GUI)
|
|
| |
appex | Дата: Суббота, 09 Мая 2015, 03:02 | Сообщение # 3 |
был не раз
Сейчас нет на сайте
| Спасибо
|
|
| |