C# 从旋转到旋转不匹配我的角色控制器

C# 从旋转到旋转不匹配我的角色控制器,c#,unity3d,quaternions,C#,Unity3d,Quaternions,因此,我正在制作一个角色控制器,它使用Quaternion.FromToRotation将玩家与重心对齐,代码如下: this_body.transform.rotation*=四元数.FromToRotation(this_body.transform.up,gravity_up) 当我在球体行星的某些部分时,它开始到处翻转,就像在视频中一样,我不知道如何解决这个问题,虽然可能是重力实现的问题,或者是角色控制器的问题,尽管我认为使用相对力不应该弄乱它 重力实施: float distance

因此,我正在制作一个角色控制器,它使用Quaternion.FromToRotation将玩家与重心对齐,代码如下:

this_body.transform.rotation*=四元数.FromToRotation(this_body.transform.up,gravity_up)

当我在球体行星的某些部分时,它开始到处翻转,就像在视频中一样,我不知道如何解决这个问题,虽然可能是重力实现的问题,或者是角色控制器的问题,尽管我认为使用相对力不应该弄乱它

重力实施:

float distance = direction.magnitude;
float forceMagnitude = G * (obj.GetComponent<MultiAttractor>().rb.mass * rb.mass) / Mathf.Pow(distance, 2);
Vector3 force = direction.normalized * forceMagnitude;
rb.AddForce(force); 
浮动距离=方向.magnity;
浮动力幅值=G*(对象GetComponent().rb.mass*rb.mass)/Mathf.Pow(距离,2);
矢量3力=方向。归一化*力大小;
rb.AddForce(force);

我的角色控制器脚本有点长,因此我认为我不应该让您感到厌烦,尽管如果需要,我可以提供它。

这适用于任何在使用刚体角色控制器时遇到问题的人:


我没有深入研究你的问题,但是你在代码中直接用四元数、FromToRotation和物理来操纵旋转。我认为你需要坚持两种方法中的一种,因为同时使用这两种方法可能会导致意想不到的行为。如果引入“原始”旋转修改,物理引擎将处理它锈菌湾


基本上只需要使用物理旋转,比如旋转物体,或者如果你想旋转物理物体,比如你在添加力,但不要移动物体,而是旋转物体,然后使用,或者只是不使用任何物理旋转和其他类型的旋转,因为这可能会导致问题,正如rustyBucketBay所说,我没有深入研究你的问题,但是你在代码中直接使用四元数、FromToRotation和物理来操纵旋转。我认为你需要坚持两种方法中的一种,因为同时使用这两种方法可能会导致意想不到的行为。如果引入“原始”旋转修改,物理引擎将处理它。谢谢!我不知道这是件事。