0

我目前正在编写一个突破版本,作为 C 和 OpenGL 的快速学习体验。

我在移动桨时遇到了一些问题。我设置了一个键盘回调,这样当按下左箭头时,它会从桨上的 x 值中减去 1,并在按下右箭头时将 x 值加 1。

考虑到这一点,当我按住任一键时,桨的移动速度非常慢。例如,我可以通过增加 x 值更改为 10 的数量来更改此设置。当我这样做时,桨似乎在屏幕上结结巴巴,因为它一次跳跃 10 次。它现在当然在屏幕上移动得更快,但看起来并不流畅。

我正在使用 GLUT 在 OSX 上进行窗口化。

有没有办法加快速度并保持它看起来流畅?

4

2 回答 2

2

游戏中常见的东西是键盘阵列。因此,您也可以一次按下多个按钮。

您有一个数组,您可以在其中保留键的状态(按下时放置 1,释放时放置 0)。并且您通过仅从数组中获取信息而不是直接从输入中获取信息来处理每一帧中的游戏。

于 2011-03-23T20:15:07.350 回答
0

这是我的一个项目中的一些代码:

bool keyDown[256];

...

//Called when a key is pressed
void handleKeypress(unsigned char key, int x, int y) {  
    keyDown[key] = true;
}

void handleKeyUp(unsigned char key, int x, int y){
    keyDown[key] = false;
}

这实质上保留了每个键的状态数组,因此您每次都可以检查它们。然后,您不必依赖频繁出现的回调。

于 2011-03-23T20:20:11.357 回答