1 回答
TA贡献1804条经验 获得超7个赞
根据您的尝试,我假设您正在尝试向与其碰撞的物体添加力。
首先,你做了:
if (myCollision.gameObject.name == "Cube")
{
var = GameObject.Find("Cube");
var.AddForce(new Vector3(0.0f, 0.0f, power));
}
尽量避免使用GameObject.Find(string)方法,因为这是一个昂贵的调用。
事实上,您甚至不需要这样做,因为您实际上已经拥有了正在碰撞的游戏对象,这就是目的myCollision。
你可以这样做:
if (myCollision.gameObject.name == "Cube")
{
var = myCollision.gameObject; // Aka the gameobject you have collided with.
var.AddForce(new Vector3(0.0f, 0.0f, power));
}
回到问题上来,您想要做的是向刚体添加力,但是var类型是GameObject,而不是RigidBody。
RigidBody您需要做的是从 获取的组件GameObject,如下所示:
var.GetComponent<Rigidbody>().AddForce(...
请注意,如果 GameObject 没有附加 Rigidbody 组件,则会发生空引用异常。
确保与您碰撞的立方体在 Unity 的检查器中具有 RigidBody 组件。
另外,您可能需要注意,重复GetComponent()调用的成本可能会很高。如果可能的话,您可以考虑缓存它。
- 1 回答
- 0 关注
- 134 浏览
添加回答
举报