0

我正在制作一个相当基本的自上而下的 2D 射击游戏(想想 Space Invaders),但我遇到了 KeyEvent 每秒处理太多事件的问题。

我有这个:

if (e.getKeyCode() == KeyEvent.VK_SPACE){
    shoot();
}

shoot() 创建一个子弹并让它向上发射,但是如果你只是按住空格来发射数百颗子弹,就会出现问题,使游戏变得微不足道。

有没有办法让它每秒只处理一个或两个按键,而忽略其余的?

4

2 回答 2

1

您可以使用手工制作的计时器,使其既轻巧又易于定制,例如:

long lastShoot = System.currentTimeMillis();
final long threshold = 500; // 500msec = half second

public void keyPressed(KeyEvent e) { 
  if (e.getKeyCode() == KeyEvent.VK_SPACE)
  {
     long now = System.currentTimeMillis();
     if (now - lastShoot > threshold)
     {
       shoot();
       lastShoot = now;
     }
  }
}
于 2013-02-04T18:10:13.720 回答
0

在那种类型的游戏中,屏幕上一次只允许一个子弹不是通常吗?在当前子弹击中某物或从屏幕顶部消失之前,不要进行射击。

于 2013-02-04T18:11:51.563 回答