0

そのため、私はSlick API 2D Game Javaチュートリアルのチュートリアルに従っており、APIの使用方法の基本を習得しました。しかし、それから、私が遊んでいて、ゲームを作ろうとしていたとき。2Dスペースシューティングゲームに弾丸/発射システムを実装しようとしました。そして、私はそれを行う方法を見つけることができないようです!

グーグルとユーチューブを見て回ってみましたが、全然役に立たない…!私のゲームは今、船を右から左に動かすだけです。スペースバーを押すたびに弾丸のようなものが発射されるようにしたいと思います。どうすればいいのかわからない…誰かが新しいプログラマーに簡単に説明してくれることを願っている!

4

2 に答える 2

5

Slick についてはよくわかりませんが、「弾丸システム」の背後にあるアイデアはそれほど悪くありません。

発砲時に即時ヒットが必要な場合を除きますが、そうではないようです。実行する必要があることの背後にある一般的な考え方は次のとおりです。

まず、スペースバーを押す音を聞いてください。このような場合は、新しい「弾丸」オブジェクトを作成します。

このオブジェクトに移動方向と速度を指定し、その方向に徐々に移動します。

移動中、敵とパスを横切るかどうかも検出します。もしそうなら、弾丸を取り除き、敵を殺します。

これは、何をすべきかについての非常に基本的な考え方です。

于 2013-01-14T02:06:49.910 に答える
1

update入力にポーリングを使用していると仮定すると、スペースバーのメソッドにチェックを追加する必要があります。Bulletスペースバーが押された場合、 の新しいインスタンスを箇条書きの配列に追加し、最初のxy、およびvelocityをコンストラクターに渡します。

クラスBulletは次のようになります。

public class Bullet
{
    public static float VELOCITY;
    private Vector2f position;

    public Bullet(float x, float y, float velocity)
    {
        position = new Vector2f(x, y);

        VELOCITY = velocity;
    }

    public void update(float delta, boolean vertical)
    {
        if(vertical)
        {
            y += VELOCITY * delta;
        }
        else
        {
            x += VELOCITY * delta;
        }
    }
}

また、メソッド内の箇条書きの更新メソッドを呼び出すこともできますupdate。次のようなものでこれを行います:

for(Bullet bullet : bullets)
{
    bullet.update(delta, true);
}
于 2013-01-14T05:42:54.353 に答える