2 回答

TA贡献1860条经验 获得超9个赞
Windows 中的鼠标每秒更新 240 次。游戏循环以每秒 60 帧的速度运行。这种差异会导致较大的鼠标增量。解决方案是限制鼠标增量的变化:
Vector2 mouseDifference;
const float MAXDELTA = 6; // Set to the appropriate value.
mouseNow = Mouse.GetState();
if (mouseNow.X != mouseDefaultPos.X || mouseNow.Y != mouseDefaultPos.Y)
{
mouseDifference.X = Math.Min(MAXDELTA, mouseDefaultPos.X - mouseNow.X);
mouseDifference.Y = Math.Min(MAXDELTA, mouseDefaultPos.Y - mouseNow.Y);
leftrightRot += mouseSens * mouseDifference.X;
updownRot += mouseSens * mouseDifference.Y;
Mouse.SetPosition((int)mouseDefaultPos.X, (int)mouseDefaultPos.Y);
UpdateViewMatrix();
}

TA贡献1815条经验 获得超10个赞
这是一个旧线程,但我想我会分享一个解决方案。对我有用的解决方案是使用 GameTime 对象来关联玩家应该旋转多少。换句话说,按 (delta * rotationSpeed * GameTime.ElapsedTime.TotalSeconds) 旋转,以便每次旋转都与自上一帧以来经过的时间有关。这可以防止丢帧,我发现这对我来说是个问题。
- 2 回答
- 0 关注
- 80 浏览
添加回答
举报