Unity 5.5.0f3 воспроизводит анимацию в обратном направлении во время выполнения

Оригинальный вопрос по Unityforums здесь

Я пытался заставить анимацию не только замедляться и ускоряться, но и воспроизводить в обратном направлении в зависимости от пользовательского ввода для моего приложения Hololens. Я использую систему Mecanim, а не устаревшую анимацию.

Все это должно происходить во время выполнения, посредством динамического пользовательского ввода.

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

Прямо сейчас я манипулирую значением Animator.speed, но это работает только для значений>= 0.

Любая помощь будет принята с благодарностью!

Редактировать: Если ссылка не работает или не видна никому, вот мой код:

private Animator anim;
 //...
 anim = gameObject.GetComponent<Animator>();
 //...
 public void OnManipulationUpdated(ManipulationEventData eventData)
     {
         if (anim.isActiveAndEnabled)
         {

             anim.speed = eventData.CumulativeDelta.x;
             anim.Play("KA_Cover_Anim");
             return;
         }
         //...
     }

Edit2: неправильно отмечен как дубликат! Связанный вопрос не относится к аналогичной проблеме и требует другого решения

Edit3: для пояснения, связанный "дубликат" использует устаревшую систему анимации, которая не имеет отношения к моему вопросу. В Mecanim, новой системе анимации в Unity 5.xx, вы не можете получить прямой доступ к анимациям, как показано в выбранном ответе. Также невозможно изменить скорость анимации, как показано во втором ответе.

1 ответ

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

В состоянии анимации вы можете настроить просмотр параметра и умножить его на скорость анимации по умолчанию. Все, что вам нужно сделать в коде, это что-то вроде

animator.setFloat("Speed",-1.0f);

Надеюсь, это поможет.

Другие вопросы по тегам