2 回答

TA貢獻1860條經(jīng)驗 獲得超9個贊
Windows 中的鼠標每秒更新 240 次。游戲循環(huán)以每秒 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條經(jīng)驗 獲得超10個贊
這是一個舊線程,但我想我會分享一個解決方案。對我有用的解決方案是使用 GameTime 對象來關聯(lián)玩家應該旋轉(zhuǎn)多少。換句話說,按 (delta * rotationSpeed * GameTime.ElapsedTime.TotalSeconds) 旋轉(zhuǎn),以便每次旋轉(zhuǎn)都與自上一幀以來經(jīng)過的時間有關。這可以防止丟幀,我發(fā)現(xiàn)這對我來說是個問題。
- 2 回答
- 0 關注
- 102 瀏覽
添加回答
舉報