2015-07-22 4 views
2

Я создал Animator Controller (называемый Player) и присвоил его полюсу моего гуманоидного аватара Animator, а также простыми состояниями анимации с подходящими переходами. См. Два прикрепленных изображения.Unity 5.1 Animator Controller не переходит

Я приложил сценарий, содержащий следующий код, к моему игровому объекту аватара, но мне интересно, чего я не вижу или делаю неправильно, что переход от Idle к Walk не состоится, хотя я вижу, что speed переменная увеличивается при нажатии W.

Может ли кто-нибудь помочь мне разобраться в проблеме?

using UnityEngine; 
using System.Collections; 

public class CharAnim : MonoBehaviour 
{ 
    private Animator animator; 
    float speed; 

    void Start() 
    { 
     animator = GetComponent<Animator>(); 
    } 

    void Update() 
    {  
     animator.SetFloat("speed", Input.GetAxis("Vertical")); 

     if (Input.GetKeyDown(KeyCode.W) && (speed > 0.5f)) 
     { 
      animator.SetTrigger("Walk"); 
     } 
     else 
     { 
      animator.SetTrigger("Idle"); 
     } 
    } 
} 

х

enter image description here

enter image description here

ответ

2

Проблема в вашем коде, animator.SetTrigger("Walk"); вызывается в одном кадре при нажатии клавиши и animator.SetTrigger("Idle"); вызывается для остальной части кадры.

Попробуйте изменить Input.GetKeyDown(KeyCode.W) на Input.GetKey(KeyCode.W). Первый возвращает true только один раз, момент, когда вы нажимаете клавишу, тогда как последний возвращает true до тех пор, пока вы не отпустите клавишу. Что-то вроде:

void Update() 
{ 
    if(Input.GetKey(KeyCode.W)) 
    { 
     animator.SetTrigger("Walk"); 
    } 
    else    
     animator.SetTrigger("Idle"); 
} 

На стороне записки, вы не нуждаетесь в speed переменную в Animator для запуска анимации прогулки, так как вы уже делаете, что с помощью W.

Animator setup

Idle -> Прогулка enter image description here

Walk -> Idle enter image description here

+0

Благодаря Nimesh. Я внес изменения, которые вы предложили, но состояние 'Idle' остается постоянным. Скорость увеличивается до «1», хотя переход не выполняется. Можете ли вы воспроизвести эту ситуацию? – Joshua

+0

Да, я пробовал то же самое здесь, и он работает. Вы уверены, что правильно настроили аниматор? Состояние бездействия ----------- Прогулка ------------> Состояние ходьбы Состояние ходьбы ---------- Холостой ход ------ -------> Idle State Не используйте переменную скорости, если вы используете логическое значение для установки триггера. – Nimesh

+0

Кроме того, удалите AnyState & Entry из вашего Animator, если вы их не используете. Я лично предпочитаю настраивать каждое состояние и их переходы вручную. – Nimesh

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