方法“ AddForce()”不适用于我的对象

时间:2019-03-30 14:43:38

标签: c# unity3d physics

我试图在名为“简单香蕉”的对象上加力,但是它不起作用。有我的代码:

simpleBanana.GetComponent<Rigidbody>().AddForce(Vector3.back * 10000f, ForceMode.Impulse);

插入“ Debug.Log(“ ...”);“在下一行工作。物体的质量为1,物体不是运动学

1 个答案:

答案 0 :(得分:1)

首要也是最重要的:通过这种方式获得刚体会导致性能降低。 GetComponent是一种非常昂贵的方法,永远不要在Update上执行,而要在void Setup中执行,将其保存到RigidBody类型的对象中,例如在API参考中:

https://docs.unity3d.com/ScriptReference/Rigidbody.AddForce.html

第二: 我认为这可能是一个参考问题。 我刚开始时遇到了很多麻烦。 确保simpleBanana是包含RigidBody的对象。 如果您对RigidBody的引用没有拖放,请确保在应用GetComponent之前导航至simpleBanana。

如果您的脚本位于simplePotato上,并且您尝试访问simpleBanana,请执行以下操作:

RigidBody simpleBanana = GameObject.Find('simpleBanana').GetComponent<RigidBody>();

或者如果simpleBanana是simplePotato的子代:

RigidBody simpleBanana = this.transform.GetChild(index_of_the_child).GetComponent<RigidBody>();

获得正确的参考文献后,您可以添加所需的任何力量。

但是请记住,只能在void Setup上获取组件。