2016-09-23 3 views
0

Я работаю над этой игрой breakout-gameNullReferenceException Fire Ball

И я пытаюсь сделать шар огня и сталкиваются с стеной подпрыгивая, чтобы сделать это, я сделал то, что он сказал, я добавил сценарий и поставить этот код:

public class BallMove : MonoBehaviour { 


private Rigidbody rb; 
public float ballVelocity = 800f; 

private bool isMove; 
// Use this for initialization 
void awake() { 
    rb = GetComponent<Rigidbody>(); 
} 

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

    if (Input.GetButtonDown ("Fire1") && isMove == false) { 
     transform.parent = null; 
     isMove = true; 
     rb.isKinematic = false; 
     rb.AddForce (new Vector3(ballVelocity,ballVelocity,0)); 
    } 
} 

}

Я понимаю каждую строчку этого кода, но когда я пытаюсь играть в этом, я получил NullReferenceException, я могу запустить игру, но когда я нажимаю кнопку Я ошибка, кто-то знает почему? и что происходит?

ответ

2

Вы должны использовать Awake(), а не awake(). В вашем случае вы используете «настраиваемую» функцию, а не «официальную», используемую движком Unity.

Таким образом, двигатель не может запускать эту функцию сам по себе, а rb неподвижных изображений при использовании в Update().

Пример:

void Awake() { 
    rb = GetComponent<Rigidbody>(); 
} 
+1

Избили меня 2seconds, это ответ, учитывая, что геймобжекты также имеет Rigidbody прилагается –

+1

@ParadoxForge: хороший улов! Да, это типичная ошибка людей, которые пытаются узнать Единство. Чувствительность к регистру часто игнорируется :-) –