我在这个脚本中收到错误。
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--;
}
}
请告诉我要编辑的内容,而不仅仅是编辑脚本。
答案 0 :(得分:3)
您对Instantiate()的来电不会产生GameObject。它将返回普通Object。因此,您随后尝试访问RigidBody - 使用bullet.rigidbody
- 对象不知道。
因此实例化时执行显式转换:
var bullet = (GameObject) Instantiate(BulletPrefab, transform.Find("BulletSpawn").position, transform.Find("BulletSpawn").rotation);
甚至明确写GameObject bullet = ...
以避免这样的错误。如果这样做,如果忘记演员,编译器将开始在真实错误的位置进行投诉。