【发布时间】:2018-10-19 00:52:08
【问题描述】:
我正在尝试平滑地翻转我的第一人称角色,同时能够使用鼠标外观在 y 轴上旋转玩家。问题是 lerp 并没有以确切的结果结束。我希望最终的旋转结果是精确的,使得 (transform.up == TargetUpDirection())
void FixOrientation() {
if(transform.up != TargetUpDirection()) //Vector3(0, -1, 0)
{
transform.rotation =
Quaternion.Lerp(transform.rotation,
Quaternion.LookRotation(transform.forward,
TargetUpDirection(), 0.1f);
}
}
如果我在翻转时使用鼠标查看,transform.up.y 的结果总是小于 1,例如 0.99881231,我需要继续使用鼠标查看,直到它自行纠正并且我不喜欢它。
原因可能是当我使用鼠标查看时,字符向前被修改,这导致了这种情况,但我不知道如何实现解决方案,因为四元数让我感到困惑。
【问题讨论】:
-
Quaternion.Lerp需要 3 个参数。 -
对不起,我编辑了它以添加第三个
-
我会尝试使用 slerp 而不是 lerp,但我认为实际问题可能是您的 mouselook 功能中的万向节锁定。
-
肯定用
Slerp,但万向节锁不是问题,因为他使用的是四元数。 -
我认为您在
TargetUpDirection()之后缺少)。