2015-03-23 3 views
0

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

я получаю эту ошибку "активов/Карты/map1/предприятия/Player/PlayerMovement.cs (6,18): предупреждение CS0649: Поле PlayerMovement.animator' is never assigned to, and will always have its default value нуля»"

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

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

using UnityEngine; 
using System.Collections; 

public class PlayerMovement : MonoBehaviour { 
Animator animator; 
public float movementSpeed = 100.0f; 
public bool Movement = true; 
public int Direction = 0; 

// Use this for initialization 
void Start() { 
    animator.GetComponent<Animator>(); 
} 

// Update is called once per frame 
void Update() { 

    if (Movement == true) { 
     if (Input.GetKey (KeyCode.W)) { 
      transform.Translate ((Vector2.up) * movementSpeed * Time.deltaTime); 
      animator.SetInteger("Direction",0); 
     } 
     if (Input.GetKey (KeyCode.A)) { 
      transform.Translate ((-Vector2.right) * movementSpeed * Time.deltaTime); 
      animator.SetInteger("Direction",270); 
     } 
     if (Input.GetKey (KeyCode.S)) { 
      transform.Translate ((-Vector2.up) * movementSpeed * Time.deltaTime); 
      animator.SetInteger("Direction",180); 
     } 
     if (Input.GetKey (KeyCode.D)) { 
      transform.Translate ((Vector2.right) * movementSpeed * Time.deltaTime); 
      animator.SetInteger("Direction",90); 
     } 
     else{ 
      animator.SetInteger("Direction",360); 
     } 
    } 

} 
} 

это ссылка Imgur на экран выстрелы аниматора гуй единства. Я бы поставил их прямо на этот экран, но у меня нет прав на это.

Imgur Link

ответ

0

Я считаю, что это является виновником:

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

он не assinged это должно быть так:

   void Start() 
       { 
      //you have to use the variable u declared and assing it to the animator 
       animator = this.GetComponent<Animator>(); 
       } 

надежда, что решает эту проблему.

+0

Это избавило от ошибки, но анимация все равно не изменится. Теперь он дает мне несколько ошибок во время выполнения, говоря, что _Animator не был инициализирован. UnityEngine.Animator: SetInteger (String, Int32) _, который является нечетным, потому что это точный способ, который я использовал в моем сценарии playermovement – MlkShakes

+0

ok позволяет увидеть этот шаг за шагом 1: объект, к которому прикреплен скрипт, делает у него есть компонент аниматора в редакторе? если да, то есть ли в нем анимационный контроллер (тот, который вы показали на картинке)? если да, то давайте посмотрим. 2: ОК, затем удалите весь код в обновлении и сделайте следующее: if (Input.GetKey (KeyCode.W)) {animator.setInteger («Направление», 0);} теперь убедитесь, что у вас есть игровое окно и аниматор окно состояния, открытое одновременно, и проверьте, работает ли эта анимация. – LumbusterTick

+0

все, что у меня настроено правильно. Сделал то, что вы сказали, и анимации пока нет. – MlkShakes

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