-1

我正在使用 C++ 中的 OpenGL 开发一个 2D 程序。我正在使用 Glut 键盘功能。它的问题是它一次只能响应一个键。

示例:当我同时按下 UP 和 RIGHT 时,它不会像预期的那样沿对角线移动,而是向上或向右移动。

我的 switch 语句看起来像这样:

case GLUT_KEY_UP:     

    f.Move(UP);
    break;

case GLUT_KEY_DOWN: 
    f.Move(DOWN);
    break;

Move()函数添加或减去对象的 (x,y) 值。

是我的处理问题(switch语句)吗?还是 Glut 的 kb 功能只是有限的?

有没有其他方法可以解决这个问题?我真的不想浪费时间试图找出问题出在图书馆本身并且可以在其他地方找到更好的解决方案。

4

1 回答 1

3

这个想法是跟踪键的状态,而不是在按下键的那一刻立即执行某些操作。

我相信其他人可以更好地解释,但基本上,看起来你正在告诉计算机立即向键对应的方向移动(例如 10 个像素)。如果你真的想一想,那么对角线移动是不可能的,因为这甚至不是计算机所知道的概念。

你想考虑物理。速度,力(记住,加速度是速度的时间导数,速度是位置的时间导数)。然后你可以想出一个方案来让计算机知道任意方向,而不是 4 个单独的硬编码动作来执行。

于 2013-10-16T05:11:24.013 回答