我在这个脚本中收到错误?
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--;
}
}
答案 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);