2014-05-08 4 views
0

Я получаю сообщение об ошибке в этом скрипте.Ошибка игры Unity FPS

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

Вы спрашиваете, получаете ли вы ошибку в этом скрипте? Кроме того, если ошибка говорит вам, что какой-то тип не содержит определения для твердого тела, это означает, что он не содержит определения для твердого тела. – Tarec

+1

Это то, что он говорит. Тип объекта 'bullet' не содержит члена с именем' rigidbody'. – Polynomial

+0

у него есть жесткий компонент тела на нем, хотя ??? – Bigwater

ответ

3

Ваш звонок Instantiate() не приводит к GameObject. Он вернет равную Object. Поэтому впоследствии вы пытаетесь получить доступ к RigidBody - используя bullet.rigidbody, о котором объект не знает.

Когда инстанцировании поэтому выполнить явное приведение:

var bullet = (GameObject) Instantiate(BulletPrefab, transform.Find("BulletSpawn").position, transform.Find("BulletSpawn").rotation); 

или даже явно написать GameObject bullet = ..., чтобы избежать ошибок, как это. Если вы это сделаете, компилятор начнет жаловаться на местоположение истинной ошибки, если вы забудете бросок.

+0

'GameObject bullet = ...' все равно приведет к ошибке компилятора без приведения. – Joe

+1

Да @Joe, но дело в том, что ошибка будет более понятной. Я сделал это более ясным (надеюсь). Спасибо, что указали это. – Bart

+0

Да, теперь намного яснее. Благодарим за обновление – Joe

Смежные вопросы