0

私はスペースインベーダーのような単純な 2D シューティングゲームを作成しています。「敵」を水平方向にのみ、一方の側から他方の側に同じ速度で動かしたいと考えています。どうやってやるの?

私はすでに「ヒーロー」に対して aを使用KeyListenerしていますが、自動的に行う方法がわかりません。

ここに役立つコードがいくつかあります。

public SimpleEnemy(String linkimg, int x, int y, int life) {
    super(linkimg, x, y);
    this.life=life;
    this.isMoving=false;
}

public void move() {
    x += dx;
    y += dy;
}
4

1 に答える 1

0

必要なのはゲームループです。たとえば、終了することのない while ループ (エンドレス ループ) と、必要に応じてヒーローの位置を更新します。

while (true) {
    // insert statement if move is needed here
    move();
}

これはかなり基本的な例ですが、物事を明確にする必要があります。

Java を使用していると想定しているため、jgameなどのゲーム フレームワークを確認できます。これらのフレームワークは同様のアプローチを採用しており、より快適に作業できます。

編集:

最近のプロセッサは非常に高速に実行されており、この無限ループは短時間で非常に頻繁に実行されることに注意してください (1 秒あたり 1000 回以上)。したがって、このループの実行時間を制限する必要があるかもしれません。そうしないと、ヒーローが画面の外に出て、見ることができなくなります。

これは、睡眠などで達成できます。また、私が言及したこれらのフレームワークには、この制限が搭載されています。

于 2012-06-18T08:34:57.990 に答える