gpt4 book ai didi

c++ - 抓老鼠?

转载 作者:太空狗 更新时间:2023-10-29 22:52:48 24 4
gpt4 key购买 nike

我正在使用 GLUT 开发一款 FPS 游戏。我需要一种方法来捕获鼠标,以便相机继续移动,因为现在当鼠标位置超过监视器限制时,无法计算 X 的变化或 Y 的变化。我如何“捕获”鼠标过剩?

谢谢

最佳答案

我建议使用像 OGRE 3D 这样的现成引擎相反,但如果您真的想重新发明轮子,方法如下...

在我所知道的所有情况下,PC FPS 游戏通过注册鼠标运动回调来“捕获”指针,注意相对运动,然后将指针扭曲回窗口的中心。

这是我在一两年前编写的一些代码,用于将鼠标输入添加到 OpenGL with C++ 类(class)中的示例乒乓球 table :

void resetPointer() {
glutWarpPointer(TABLE_X/2, TABLE_Y/2);
lastMousePos = TABLE_Y/2;
}

void mouseFunc(int sx, int sy) {
if (!started) { return; }
int vertMotion = lastMousePos - sy;
lastMousePos = sy;
player1.move(vertMotion);

// Keep the pointer from leaving the window.
if (fabs(TABLE_X/2 - sx) > 25 || fabs(TABLE_Y/2 - sy) > 25) {
resetPointer();
}
}

// This goes in with your "start new game" code if you want a menu
resetPointer();
glutSetCursor(GLUT_CURSOR_NONE);
glutPassiveMotionFunc(mouseFunc);

它只跟踪垂直运动,但添加水平运动是微不足道的。

关于c++ - 抓老鼠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3643739/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com