我正在使用C ++ / OpenGL创建一个小FPS游戏,而且我遇到了一个问题。
以下是我的相机旋转功能的代码:
OldMouseX = MouseX;
OldMouseY = MouseY;
GetCursorPos(&p);
ScreenToClient(hWnd, &p);
MouseX = p.x - CenterX;
MouseY = p.y - CenterY;
if ((MouseX - OldMouseX) > 0) { // mouse moved to the right
heading -= 1.0f;
yrot = heading;
}
else if ((MouseX - OldMouseX) < 0) {
heading += 1.0f;
yrot = heading;
}
if ((MouseY - OldMouseY) > 0) { // mouse moved up
VertLook += 1.0f;
}
else if ((MouseY - OldMouseY) < 0) {
VertLook -= 1.0f;
}
SetCursorPos(CenterX, CenterY);
现在,当我打电话
时会发生什么SetCursorPos(CenterX, CenterY);
它可以防止我的相机旋转,只是轻轻地将它抖动。
任何帮助将不胜感激!
答案 0 :(得分:0)
尝试将相机移动MouseX - OldMouseX
/ MouseY - OldMouseY
(乘以某个因子),而不是每次打勾1
。