Активировать анимацию, чтобы играть в зависимости от gameObject и / или направления камеры - PullRequest
1 голос
/ 26 сентября 2019

Unity 2018.4.7f1, C #

Я создаю игру с 2D-спрайтами в 3D-среде, используя Blend Trees для группировки 12 анимированных клипов (представляющих 12 различных перспектив / поворотов).Недавно я сделал 3 новых анимации (36 новых клипов) для поворота моего персонажа - она ​​поворачивается полностью вокруг (180 градусов), поворачивается влево (90 градусов) и вправо (270 градусов), но проблема в том, что я не могу понять, какчтобы подключить их к моему существующему Animator.

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

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

  1. Сделать 3 новых дерева смешивания, по одному на каждый поворотный аним, создать параметр в Animator для активации при переходе?Если да, то какой тип параметра (bool, триггер)?И должен ли скрипт сосредоточиться на операторах if, учитывающих положение преобразования gameObject?

  2. Что-то сделать с анимацией в окне «Анимация» в окне «Свойства»?

  3. Сделать AnimationEvent в моем скрипте Player?

  4. Подключить дерево смешения к другому дереву смешения?

  5. Начать поиск методов кватерниона?

На снимке экрана ниже показано Blend Tree «обычного» анима (SL обозначает Shift Left, так как в персонаже смещает ее вес влево как один из множества пустых анимов), который я пытался сделатьизменить, добавив Blend Tree с анимированным клипом.

enter image description here

...