坚持使用 Rigidbody.AddTorque

问题描述

所以我现在有点犹豫要做什么,因为正如我所说,我正在尝试使用 Rigidbody.AddTorque 将刚体旋转到某个点,我将使用它来将玩家与重力对齐拉,使他们可以直立。我已经得到了代码的输入部分,我只是没有办法旋转玩家以与它对齐,而不用 Quaternion.FromToRotation 违反物理定律并弄乱我的角色控制器,我就是也试图使完全基于物理的旋转变得明智,以避免任何其他问题。

我尝试了几种方法,首先我尝试调整我的角色控制器代码,该代码使用 Rigidbody.AddForce 来移动玩家并抑制不需要的移动,因为 Rigidbody.AddTorque 基本上是 Rigidbody.AddForce 但对于旋转,但是,当我尝试它时它太弱了并且只是在翻转,这是用于计算一个轴所需的力的角色控制器的代码

if(projected_speed.x*speed == relative_v.x)
{
applied_speed.x = 0f;
}
else if(Mathf.Sign(projected_speed.x)== -1)
{
applied_speed.x = relative_v.x - Mathf.Abs(projected_speed.x*speed);
}
else if (Mathf.Sign(projected_speed.x) == 1)
{
applied_speed.x = projected_speed.x*speed - relative_v.x;
}

其中projected_speed 是控制器想要达到的速度,relative_v 是相对速度,而applyed_speed 是在Rigidbody.AddForce 中实际应用的速度。 无论如何,所以也许我没有使用足够的力,因为玩家受到引力的影响,但这可能会使它翻转或其他什么,所以我尝试的第二件事是PID controller,我设法找到一个解释得很好的页面,遗憾的是没有链接了,但是当我尝试这个因为你必须调整它时,我被卡住了,它什么也做不了,只是在地板上滚来滚去,有时还会旋转,可能是因为它无法应对重力,所以没有用,所以有人知道我最终如何做到这一点并使我的角色能够根据重力调整自己吗?

解决方法

抱歉没有说明我的问题已经解决,点击here获得答案,感谢 Ruzihm。