我试图在名为“简单香蕉”的对象上加力,但是它不起作用。有我的代码:
simpleBanana.GetComponent<Rigidbody>().AddForce(Vector3.back * 10000f, ForceMode.Impulse);
插入“ Debug.Log(“ ...”);“在下一行工作。物体的质量为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上获取组件。