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

DjA*_*dyC -1 c# physics unity-game-engine

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

rb.AddForceAtPosition(transform.TransformDirection(Vector3.up * 5), transform.position + transform.TransformDirection(mainThrustPt)); 
Run Code Online (Sandbox Code Playgroud)

Pro*_*mer 5

Rigidbody.AddForceAtPosition功能对物体施加扭矩.这意味着对象将同时旋转和移动.

如果您只想应用不移动对象的旋转力,请使用Rigidbody.AddTorqueRigidbody.AddRelativeTorque仅对对象应用旋转力的旋转力.

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

在此输入图像描述

然而,当我运行游戏时,除了旋转之外,对象开始略微移动.

如果物体在没有增加力或不使用的情况下移动AddForceAtPosition,那么重力就会拉动物体.像我在上图中所做的那样禁用"使用重力".

  • 如果你有一个或两个脚本没关系.只要你为它增加力量它就会移动.如果不向它添加力,只要重力被禁用且没有其他物体正在推动它,它就不会移动.不要添加单个力量,它不会移动.看看我在哪里谈到仅用于旋转力的扭矩 (2认同)