Unity FPS游戏错误

时间:2014-05-08 10:34:25

标签: c# unity3d game-engine

我在这个脚本中收到错误。

  

UnityEngine不包含rigidbody的定义(Lines:22,24)

public class GunShoot : MonoBehaviour
{
    public GameObject BulletPrefab;
    public float BulletSpeed;
    public int BulletsInClip;
    public AudioClip GunshotSound;

    void Update () {
        if (Input.GetButtonDown("Shoot")){
            Shoot();
        }
    }

    void Shoot() {
        var bullet = Instantiate(BulletPrefab, transform.Find("BulletSpawn").position, transform.Find("BulletSpawn").rotation);
        bullet.rigidbody.AddForce(transform.forward * BulletSpeed);
        audio.PlayOneShot(GunshotSound);
        BulletsInClip--;
    }
}

请告诉我要编辑的内容,而不仅仅是编辑脚本。

1 个答案:

答案 0 :(得分:3)

您对Instantiate()的来电不会产生GameObject。它将返回普通Object。因此,您随后尝试访问RigidBody - 使用bullet.rigidbody - 对象不知道。

因此实例化时执行显式转换:

var bullet = (GameObject) Instantiate(BulletPrefab, transform.Find("BulletSpawn").position, transform.Find("BulletSpawn").rotation);

甚至明确写GameObject bullet = ...以避免这样的错误。如果这样做,如果忘记演员,编译器将开始在真实错误的位置进行投诉。