Unity: анимационное событие не меняет трансформацию анимированного объекта - PullRequest
0 голосов
/ 28 октября 2019

Я хочу, чтобы враг смотрел на игрока, когда он стреляет в него, я вызываю эту функцию из события анимации:

    public void ShootPlayer
    {
        thisTr.LookAt(playerTr);
        thisTr.rotation = Quaternion.Euler(0, thisTr.rotation.eulerAngles.y, 0);
        GameObject newArrow = Instantiate(straightFlightArrow, shootPoint.position, transform.rotation);
        em.canMove = true;
    }

Она вызывается, но вращение модели не меняется. Странно то, что если я вызову thisTr.LookAt (playerTr) в Start (), модель будет вращаться соответствующим образом во время анимации съемки. Кроме того, если я поверну модель из другого сценария таким же образом до запуска анимации съемки, она также будет работать.

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

1 Ответ

1 голос
/ 28 октября 2019

Свойства, которые анимируются (то есть запрещены механизмом анимации), не могут быть установлены из кода. Для этого есть обходной путь, но он уродлив - вам нужно выполнить обновление в LateUpdate () (то есть после того, как движок анимации выполняет его преобразования), и вы должны отслеживать обновленное значение, перезаписывая его каждый кадр (потому чтов противном случае движок перезапишет ваш следующий кадр тем, что он рассчитал).

Другие обходные пути включают в себя обертывание GameObjects в пустые GameObjects, т.е. мой аниматор анимировал позицию объекта, которую я также хотел изменить в коде, поэтому мойструктура была:

animatedContainer
    |- actualObjectAlsoAnimatedFromCode

Насколько я знаю, это также относится к свойствам, которые в какой-то момент заблокированы, но не обязательно изменены во время текущей анимации (и я думаю, что это проблема, с которой сталкивается ваш случай).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...