应用AddForceAtPosition时,Unity对象会移动,只应旋转

时间:2018-05-18 10:37:03

标签: c# unity3d physics

我有一个统一的游戏对象,我想用一些力量推动向量。目前我试图添加一些逼真的旋转力,因此使用AddForceAtPosition使用刚体质心的偏移量。然而,当我运行游戏时,除了旋转之外,对象开始略微移动。没有其他力量存在且没有阻力。

rb.AddForceAtPosition(transform.TransformDirection(Vector3.up * 5), transform.position + transform.TransformDirection(mainThrustPt)); 

3 个答案:

答案 0 :(得分:5)

Rigidbody.AddForceAtPosition功能在对象上应用扭矩强制。这意味着对象将同时旋转和移动。

如果您只想应用不会移动物体的旋转力,请使用Rigidbody.AddTorqueRigidbody.AddRelativeTorque,它只会对物体施加旋转力。

如果你不希望它移动,你也可以释放刚体x,y,z位置,但是当完成时,对象的移动行为会很奇怪。

enter image description here

  

然而,当我运行游戏时,对象开始稍微移动   旋转。

如果物体移动时没有向其添加力或不使用AddForceAtPosition,则重力会拉动它。禁用"使用Gravity"正如我在上图中所做的那样。

答案 1 :(得分:1)

如果需要轮换,请使用AddTorque。

答案 2 :(得分:0)

如果你用绳子捆住球的边缘,你会发现它会旋转以及旋转。在施加力之前尝试使用它:

rigidbody.constraints = RigidbodyConstraints.FreezeRotationX | RigidbodyConstraints.FreezeRotationY | RigidbodyConstraints.FreezeRotationZ;