首页 > 解决方案 > 方法“AddForce()”不适用于我的对象

问题描述

我试图对名为“简单香蕉”的物体施加力,但它不起作用。有我的代码:

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

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

标签: c#unity3dphysics

解决方案


首先也是最重要的:这种获得刚体的方式会导致性能下降。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 上获取组件。


推荐阅读