Bullet Prefab Script

时间:2014-05-08 10:05:57

标签: c# unity3d rigid-bodies

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

UnityEngine不包含刚体的定义(行: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--;
    }
}

3 个答案:

答案 0 :(得分:1)

在这种情况下,var表示创建的实例的类型为UnityEngine.Object。您需要明确指定类型转换:

var bullet = Instantiate(BulletPrefab) as GameObject;

var bullet = (GameObject) Instantiate(BulletPrefab);

一般来说,最好使用显式类型,因为它增加了可读性(我的意见),如:

GameObject bullet = Instantiate(BulletPrefab) as GameObject;

答案 1 :(得分:0)

在Unity中你需要抓住像bullet.GetComponent<Rigidbody >().AddForce(...)这样的僵硬的人 - 这是c#btw我不确定它在JavaScript中有多么不同。

答案 2 :(得分:0)

使用GetComponent让RigidBody像这样。

gameObject.GetComponent<Rigidbody>().AddForce(transform.forward * BulletSpeed);