0

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

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--;
    }
}
4

3 回答 3

1

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

var bullet = Instantiate(BulletPrefab) as GameObject;

或者

var bullet = (GameObject) Instantiate(BulletPrefab);

一般来说,最好使用显式类型,因为它可以增加可读性(我的观点),例如:

GameObject bullet = Instantiate(BulletPrefab) as GameObject;
于 2014-05-08T10:56:07.073 回答
0

在 Unity 中,您需要像这样抓住刚体bullet.GetComponent<Rigidbody >().AddForce(...)——这是 c# 顺便说一句,我不确定它在 JavaScript 中有何不同。

于 2016-08-03T06:10:52.150 回答
0

使用GetComponent来获得类似这样的 RigidBody。

gameObject.GetComponent<Rigidbody>().AddForce(transform.forward * BulletSpeed);
于 2016-08-03T06:56:50.500 回答