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);
Надеюсь, это поможет.