bounty还有7天到期。回答此问题可获得+50声望奖励。dangoqut132希望引起更多关注此问题。
我没有想那么远,因为我专注于修复我的x轴鼠标夹,现在我不能让我的Quaternion.RotateTowards
旋转得更慢。当我输入一个触发器时,下面的代码(在我的MouseLook/Camera脚本的Update
方法中)将激活以进行不同类型的鼠标移动。
[Range(0f, 90f)][SerializeField] float xRotationLimit = 35f;
void Update()
{
transform.position = player.position + offset;
if (trigger.clampRotation)
{
clampHorizontalRotation();
}
else
{
NormalCameraMovement();
}
}
void clampHorizontalRotation()
{
Vector2 mouseDelta = Input.GetAxis(xAxis) * Vector2.right + Input.GetAxis(yAxis) * Vector2.up;
rotation.x += mouseDelta.x * sensitivity;
rotation.y += mouseDelta.y * sensitivity;
rotation.y = Mathf.Clamp(rotation.y, -yRotationLimit, yRotationLimit);
var yQuat = Quaternion.AngleAxis(rotation.y, Vector3.left);
var xQuat = Quaternion.RotateTowards(climbing.CubeObj.rotation, Quaternion.AngleAxis(rotation.x, Vector3.up), rotationSpeed * Time.deltaTime);
rotation.x = xQuat.eulerAngles.y;
transform.localRotation = yQuat;
player.transform.localRotation = xQuat;
}
void NormalCameraMovement()
{
// Normal mouse movement goes here
}
字符串
问题是RotateTowards
的var xQuat
线路。我的代码在Quaternion.RotateTowards
中使用Quaternion.AngleAxis
的原因是为了防止万向节锁定。但是现在当我输入“CubeObj”的触发器时,我的播放器会立即向它旋转,而不是缓慢旋转。
真实的发生的情况是:我走到我的触发对象(立方体对象),然后我的球员自动旋转缓慢向立方体对象,使我的球员面对它。从那里,我的垂直轴被钳制(这很容易),我的x轴鼠标旋转也被钳制,这样我就不能向左或向右移动超过一定程度。
2条答案
按热度按时间jhiyze9q1#
从docs:第一个月
“四元数
from
以maxDegreesDelta
的Angular 步长朝向to
旋转。[每次调用此函数时都会发生这种情况!]”因此,您希望减小
maxDegreesDelta
。请记住,如果您在
Update
中运行此函数,则每秒可能会发生60次(假设帧速率为60)。因此,如果将maxDegreesDelta
设置为1
这样小的数字,您仍然可以在短短一秒钟内获得60°
的旋转。考虑到整个旋转只有360°
,这是相当快的!现在,如果您刚开始构建游戏,您可能会获得高达300 FPS的帧速率。因此允许在一秒内进行最多
300°
的旋转,使您的旋转看起来瞬间完成。从一个非常小的数字开始,例如
0.01
。现在,将其乘以Time.deltaTime
,使其在设备间保持一致。然后,如果它旋转太慢,从那里调高值。将其添加为公共或序列化的浮点数,并在“播放模式”下使用检查器中的速度进行播放,直到您满意为止。记下“right”值,然后在您 * 未 * 处于PlayMode时应用该值。wecizke32#
我想这条线是错的
字符串
你在这里得到一个从
climbing.rotation
到Quaternion.AngleAxis(rotation.x, Vector3.up)
的旋转。由于climbing.CubeObj.rotation
不会改变,因此,假设鼠标没有移动,这将总是或多或少相同的旋转。=>您在此处没有平滑地旋转到目标旋转!仅平滑目标方向本身,但仍会立即捕捉到该方向。
如果我理解正确的话,你实际上想要的是将你绕X轴的旋转固定在
climbing.CubeObj
的旋转周围35°。然后你更希望平稳地旋转你的球员到这个目标旋转。
所以你的目标旋转应该是这样的。
型
然后
型