无法转换类型`UnityEngine.GameObject'到'UnityEngine.Rigidbody'

时间:2017-03-02 04:24:06

标签: c# unity3d

我有一些错误!

Unity 3D

    Rigidbody bullet = (Rigidbody)Instantiate(projectile, transform.position + transform.forward, transform.rotation);
    bullet.AddForce(transform.forward * bulletImpulse, ForceMode.Impulse);

但我在此代码中出现错误

  

无法转换类型UnityEngine.GameObject' to UnityEngine.Rigidbody'

谢谢你的帮助 请帮助!

2 个答案:

答案 0 :(得分:1)

Instantiate方法返回GameObject,而不是RigidbodyRigidbody是该游戏对象的组件,因此要获得它,您必须致电GetComponent

GameObject gameObject = (GameObject)Instantiate(projectile, transform.position + transform.forward, transform.rotation);
Rigidbody bullet = gameObject.GetComponent<Rigidbody>();

答案 1 :(得分:0)

您需要使用组件:

https://docs.unity3d.com/ScriptReference/GameObject.GetComponent.html

最终代码:

Rigidbody bullet = ((GameObject)Instantiate(projectile, transform.position + transform.forward, transform.rotation)).GetComponent<Rigidbody>();
bullet.AddForce(transform.forward * bulletImpulse, ForceMode.Impulse);