2014-03-09 4 views
2

Я недавно начал играть в single3d, и я столкнулся с следующей проблемой после учебника.Почему мой JS-скрипт работает, но не тот же C#?

В учебнике используется единство-javascript, но я предпочитаю использовать C#.

Я получил следующий код Javascript

function Shoot() { 
    var bullet = Instantiate(bulletPrefab, 
          transform.Find("BulletSpawn").position, 
          transform.Find("BulletSpawn").rotation); 
    bullet.rigidbody.AddForce(transform.forward * bulletSpeed);      
} 

и переписали его в C# -кода, как

void Shoot() { 
    GameObject bullet; 
    bullet = Instantiate(bulletPrefab, 
         transform.Find("BulletSpawn").position, 
         transform.Find("BulletSpawn").rotation) as GameObject; 
    bullet.rigidbody.AddForce(transform.forward * bulletSpeed); 
} 

Моя проблема заключается в том, что сценарий JS работает, но с моей C# код я получаю

NullReferenceException: Ссылка на объект не установлена ​​в экземпляр объекта

на линии bullet.rigidbody.AddForce(transform.forward * bulletSpeed);

Любые предложения о том, что я могу делать неправильно?

+0

ли все остальное точно так же? Где вы инициализируете bulletSpeed? –

ответ

4

Тип возврата Instantiate является Transform и не могут быть отлиты непосредственно GameObject (as GameObject)

Ваш код должен быть:

void Shoot() { 
    Transform bullet; 
    bullet = Instantiate(bulletPrefab, 
         transform.Find("BulletSpawn").position, 
         transform.Find("BulletSpawn").rotation); 
    bullet.rigidbody.AddForce(transform.forward * bulletSpeed); 
} 
+0

Спасибо, всегда эти крошечные проблемы при изучении новой структуры! – Groot

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