2017-01-16 3 views
0

Я делаю 2d игру в Unity, а для главного героя я создал 4 анимации; вверх, вниз, влево и вправо. Чтобы сделать это, я только что сделал анимацию и запускать их с линией кода:Как я могу сделать анимацию в Unity только один раз, а затем переключиться на другую анимацию

anim.SetBool ("movingUp", true); 

, которые будут нужны при нажатии кнопки вверх. Этот тип анимации легко справиться, потому что он не основан на времени, но как долго игрок хочет, чтобы персонаж находился в этом состоянии. Теперь я пытаюсь добавить анимацию, которая запускается, когда символ сталкивается с другим игровым объектом. Я не уверен, как сделать так, чтобы анимация играла всего один раз, а затем возвращалась к другой анимации. Есть ли способ запустить анимацию только один раз в Unity?

+0

Подумайте о своих анимациях как состояниях и вашем контроллере анимации в качестве конечного автомата. Я бы сделал простую анимацию, и это будет запись. Попросите другие анимации сработать, а затем вернуться к режиму по умолчанию (в режиме ожидания) на основе логики. Вы можете установить свойства для каждой анимации, щелкнув по ней. Они появляются в инспекторе – mtrueblood

+0

@mtrueblood персонаж никогда не будет в состоянии ожидания, и это действительно не отвечает на мой вопрос. Я уже понимаю, как работать с анимациями. У меня есть они, я просто не сейчас, как сделать анимацию только один раз. Вы не можете логически прокладывать путь через это с помощью состояний, потому что персонаж находится в состоянии, когда он попадает в игровой объект в течение секунды секунды, недостаточно долго, чтобы воспроизводить анимацию, поэтому как вы играете анимацию до тех пор, пока она не будет полной, это то, что я прошу – dmkanerer

+0

Вы должны предоставить более подробную информацию, мой комментарий был предназначен только как общий комментарий, так как я не был уверен, что именно ваша проблема была. Вы можете установить фиксированную продолжительность анимации и отключить цикл с панели аниматора. – mtrueblood

ответ

0

Вообще говоря, вам не нужно вводить код в свой собственный контроллер, Unity уже имеет его, а here - это ссылка на официальные руководства Unity, как использовать его. То, что вам нужно, это fire off a trigger, как и вы, на collision и установите has exit time на эту анимацию в контроллере. После этого вы просто направляете штат обратно к анимации, к которой хотите вернуться. Опять же, точные и тщательные учебные пособия можно найти в Интернете по термину Unity Mecanim how to или Animations in Unity или что-то в этом роде.

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