作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在使用 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/
我有一个数据集,其中包含大约 12 个等级从 2 到 10 的分类变量,以及其他数值变量。约 280 条记录。我正在使用 r 中的 mice 包以所有默认设置对丢失的数据执行插补。但是,当我尝试这样进
调用 canvas.getContext("webgl"); 让 Chrome 触发“Rats!WebGL hit a snag”消息,但不提供任何信息。我该如何解决? 除了 canvas.getCo
我是一名优秀的程序员,十分优秀!