0

かなり基本的なトップダウンの2Dシューティングゲーム(スペースインベーダーを考えてください)を作成していますが、KeyEventが1秒あたりのイベント数が多すぎるという問題があります。

私はこれを持っています:

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

shoot()は弾丸を作成し、それを上向きに発射するように設定しますが、スペースを押したまま数百発の弾丸を発射すると問題が発生し、ゲームが簡単になります。

残りを無視して、1秒間に1つか2つのキー押下だけを処理するようにする方法はありますか?

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

そのタイプのゲームでは、画面に一度に許可される弾丸は1つだけであるのが普通ではありませんか?現在の弾丸が何かに当たるか、画面の上部から消えるまで、射撃を許可しないでください。

于 2013-02-04T18:11:51.563 に答える