Unity Animation не будет воспроизводиться, если не будет достаточно времени с момента последней анимации - PullRequest
0 голосов
/ 20 ноября 2018

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

for (int i = 0; i < times.Length; i++) { // For each note
         bool notePlayed = false;
         while (!notePlayed) { // While current note hasn't been played (waiting for its time)
             if (Time.timeSinceLevelLoad >= timesAdjusted [i]) { // If the current time is past or equal to the time it should play
                 anim.Play ("hit"); // Play animation
                 Debug.Log ("hit!");
                 notePlayed = true; // The note has been played.
             }
             yield return null;
         }
     }

Это работает, но только если время между предыдущей и текущей заметкой достаточно велико для завершения анимации. Итак, как я могу воспроизвести анимацию независимо от того, закончилась ли она?

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Отключить имеет флажок времени выхода, чтобы изменить анимацию, не ожидая другого

0 голосов
/ 20 ноября 2018

Вы используете метод Play, который будет воспроизводить состояние анимации независимо от вашего перехода (Idle-> Hit), плюс в ваших переходах не определено условие, которое создаст бесконечный цикл между вашими состояниями.

Чтобы решить вашу основную проблему, вы должны использовать параметр «normalizedTime» равным 0, например:

anim.Play ("hit",0,0); //assuming "hit" state is in your 0 layer
...