我正在开发这款游戏breakout-game
我正试图让球发射并与墙壁碰撞弹跳,为此我做了他说的话,我添加了一个脚本并输入了这段代码:
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,我可以运行游戏但是当我按下键时我得到一个错误,有人知道为什么吗?会发生什么?
答案 0 :(得分:2)
您应该使用Awake()
,而不是awake()
。在您的情况下,您正在使用&#34;自定义&#34;功能,而不是&#34;官方&#34;一个Unity引擎使用的。
因此,引擎无法自行启动该功能,rb
在Update()
中使用时void Awake() {
rb = GetComponent<Rigidbody> ();
}
仍然为空。
示例:
{{1}}