2017-01-19 2 views
1

Оригинальный вопрос о Unityforums hereUnity 5.5.0f3 воспроизведение анимации в обратном направлении во время выполнения

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

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

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

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

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

Edit: В случае, если ссылка не работает или видимым для кого, вот мой код:

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: Некорректно отмечен как dupicate! Связанный вопрос не рассматривает подобную проблему и требует другого решения.

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

+2

Вы должны показать, что вы пробовали – Programmer

+0

Вы должны прочитать то, что я пишу: «Сейчас я манипулирую стоимостью Animator.speed, но это работает только для значений> = 0." Не хочу звучать как душ, но я ясно прояснил, что я сделал, а также не просил никого писать мне код. – TillEmpea

+0

«Вы должны прочитать то, что я пишу:« Отношение, подобное этому, не приведет вас ни к чему. Я только пытался помочь. Как мы можем узнать, почему он не работает без вашего кода? Удачи с этим! – Programmer

ответ

1

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

enter image description here

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

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

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

+0

Возможно, вы правы. Пока не определил параметры. Я закончил дублирование состояния аниматора, получив дубликат в обратном направлении и переключившись между состояниями, проверяя нужную скорость анимации и нормализованное время. Таким образом, я могу переключаться между двумя состояниями без каких-либо зацепов, так как следующее состояние поднимается на '1-timePassed'if, вы будете – TillEmpea

+0

Я проверил его, и это сработало. По какой-то причине мой чек, если время прошло больше или меньше 0, больше не работает, поэтому я буду придерживаться своего решения на данный момент (NTARS;)) – TillEmpea

Смежные вопросы