我目前正在编写一个突破版本作为C和OpenGL的快速学习体验。
我在移动球拍时遇到了一些问题。我设置了键盘回调,这样当按下左箭头时,它会从挡板上的x值中减去1,并在按下右箭头时将x值加1。
考虑到这一点,当我按住任意一个键时,拨片移动得非常慢。我可以通过增加x值更改为10的数量来更改此值。当我这样做时,桨似乎在屏幕上断断续续,因为它一次跳10个。它当然沿着屏幕移动得更快但看起来并不平滑。
我正在使用GLUT在OSX上进行窗口化。
有没有办法加快速度并使其保持平稳?
答案 0 :(得分:2)
游戏中常见的是键盘阵列。因此,您也可以一次按几个按钮。
你有一个数组,你保持键的状态(你按下时放1,释放时设置0)。并且您只需从数组中获取信息,而不是直接从输入中获取信息,从而处理每个帧中的游戏。
答案 1 :(得分: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;
}
这基本上保留了每个键的状态数组,因此您每次都可以检查它们。然后你不必经常依赖回调。