在我的游戏中,玩家是一把在光标后面旋转的枪。问题是,当枪在地上时,它会开始抽搐,与地面碰撞并自行移动,特别是当我开始移动光标时。负责跟踪光标,射击等的代码。用 FixedUpdate 编写,因此问题很可能不在于此。请提供意见,我在论坛上找不到任何关于我的问题的答案,虽然有类似的答案,但他们建议我只在 FixedUpdate 中编写代码。
澄清:除圆形对撞机外,所有类型的对撞机都会发生此类碰撞冲突。
以防万一我会插入一段代码:
public void LookDirection()
{
mousPos = Camera.ScreenToWorldPoint(Input.mousePosition);
lookDir = mousPos - rigid_B.position;
float rotAngle = Mathf.Atan2(lookDir.y, lookDir.x) * Mathf.Rad2Deg + deltaAngle;
rigid_B.rotation = rotAngle;
}

不是枪在抽搐,而是你在抽搐它。
所有物体都会受到物理模拟的影响,由于物理模拟的影响,它们在力的作用下改变其位置和旋转,这些力赋予它们空间速度和围绕物体质心旋转的角速度,而角速度又因角动量而改变。
你所要求的事情是无法逃避的
rotation。angularVelocity无论这听起来多么微不足道和合乎逻辑,但是如果身体的旋转完全受到控制,那么模拟就不应该以任何方式影响它并干扰该过程!为了这个目的,身体有一个
Freeze Rotation你没有的标志。如果物体在碰撞后要转弯,那么控制必须与模拟共存,并且成为通过转弯使物体向正确方向转弯的力量之一。
Fixed Update在物理模拟步骤期间执行。如果模拟不影响转弯,那么改变转弯Fixed Update也不会改变任何事情。因此一般来说,所有输入的Fixed Update存在目的都是完全不同的。