2014-05-08 8 views
0

У меня ошибка в этом скрипте?Bullet Prefab Script

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

ответ

1

var в данном случае означает, что созданный экземпляр типа UnityEngine.Object. Вы должны указать тип бросание в явном виде:

var bullet = Instantiate(BulletPrefab) as GameObject; 

или

var bullet = (GameObject) Instantiate(BulletPrefab); 

В общем preferrable использовать явный тип, поскольку это увеличивает читаемость (мое мнение), как:

GameObject bullet = Instantiate(BulletPrefab) as GameObject; 
0

В Unity вам нужно захватить жесткое тело, подобное этому bullet.GetComponent<Rigidbody >().AddForce(...) - это C# btw Я не уверен, насколько он отличается от JavaScript.

0

Используйте GetComponent, чтобы получить RigidBody примерно так.

gameObject.GetComponent<Rigidbody>().AddForce(transform.forward * BulletSpeed); 

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

  • Нет связанных вопросов^_^