В настоящее время я работаю над первыми основными функциями моей игры, и этот почесывает мою голову. Я хочу достичь простой вещи: блок-коллайдер активируется только в выбранных кадрах моей анимации атаки, чтобы нанести урон, а затем отключается после завершения анимации атаки. Для этого я использую свойства в окне анимации. Я настроил его так, что в первом кадре атакующего коллайдера становится активным, а в последнем кадре анимации он возвращается в отключенное состояние.
Похоже, что это работает в простых случаях нажатия кнопок изолированной атаки. Однако, если я спамлю ввод данных направления и атакую, у меня довольно часто возникает ситуация, когда все манипуляции со свойствами по какой-то причине перестают работать (коллайдер остается отключенным), пока я не перестану нажимать какие-либо кнопки в течение некоторого времени.
Я попытался отладить его самостоятельно. Я удалил всю логику, касающуюся самого Collider, из кода (поэтому он будет в неправильном месте в GIF), а также переместил ключевой кадр включения Collider в каждом кадре анимации. Оба из них не работали.
Вот короткий клип о том, как коллайдер перестает работать после простого ввода.
У меня были похожие опыты с анимационными событиями в предыдущей игре, над которой я работал. На этот раз коллайдер отключения событий не срабатывал иногда.
Я знаю, как обойти это - я могу получить продолжительность анимации, а затем включить / отключить коллайдер, используя Time.deltaTime, но я хотел бы знать, что я делаю неправильно. В настоящее время мне кажется, что манипулирование свойствами с помощью Animation кажется крайне ненадежным, и, поскольку у меня нет большого опыта в Unity, я, вероятно, не знаю что-то вместо ошибки API. Так может кто-нибудь ответить, что я делаю не так?