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

varこの場合の Aは、作成されたインスタンスのタイプが であることを意味します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

GetComponentを使用して、RigidBody を次のように取得します。

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

Unity では、このように Rigidbody を取得する必要がありますbullet.GetComponent<Rigidbody >().AddForce(...)。これは c# ですが、JavaScript との違いはよくわかりません。

于 2016-08-03T06:10:52.150 に答える