0

ゲーム開発は初めてですが、プログラミング言語には精通しています。私は Flixel の使用を開始し、スコアとライフを使用してブレークアウト ゲームを実行しています。

プレイヤーのライフがなくなった場合に、新しいスクリーン/ゲーム オーバー スクリーンを作成する方法に固執しています。プロセスを次のようにしたいと思います。

  1. IFライフが0であることを確認する
  2. ゲームを一時停止し、「ゲーム オーバー」と表示された新しい画面 (おそらく透明) を表示します。
  3. ユーザーがENTERをクリックまたはヒットすると、レベルが再起動します

現在、生活を更新するために必要な機能は次のとおりです。

private function loseLive(_ball:FlxObject, _bottomWall:FlxObject):void
{
    // check for game over
    if (lives_count == 0)
    {

    }
    else 
    {
        FlxG:lives_count -= 1;
        lives.text = 'Lives: ' + lives_count.toString()
    }
}

ここに私のメインのgame.asがあります:

package
{
    import org.flixel.*;

    public class Game extends FlxGame
    {
        private const resolution:FlxPoint = new FlxPoint(640, 480);
        private const zoom:uint = 2;
        private const fps:uint = 60;

        public function Game()
        {
            super(resolution.x / zoom, resolution.y / zoom, PlayState, zoom);
            FlxG.flashFramerate = fps;
        }
    }
}
4

1 に答える 1

2

これを行うには複数の方法があります...

別の投稿への回答で説明したように、さまざまな FlxStates を使用できます。 Flixel を使用したユーザー UI の作成、ただし、スコアなどを渡すことでスマートになるか、レジストリタイプのセットアップを使用する必要があります

上記のように透明なオーバーレイ画面で実際に機能させたい場合は、次のようなことを試すことができます(正確な詳細はプロジェクトによって異なる場合があることに注意してください。アイデアを提供しようとしています) :

まず、レベルを開始するための適切なロジックがあることを確認してくださいStartLevel

ゲームがまだ進行中かどうかを追跡するフラグ (単なるブール値) を定義する必要があります。private var _isGameOver:Boolean;の最後でStartLevel()、これを に設定しfalseます。

create()関数で、ゲーム オーバー画面に必要なすべてのもの (テキスト、画像、「Enter キーを押して再起動します」など) をPlayState含む新しい を作成します。FlxGroupに設定しvisible = falseます。そのためのコードは次のようになります。

grpGameOver = new FlxGroup();
grpGameOver.add(new FlxSprite(10,10).makeGraphic(FlxG.Width-20,FlxG.Height-20,0x66000000));  // just a semi-transparent black box to cover your game screen.
grpGameOver.add(new FlxText(...)); // whatever you want to add to the group...
grpGameOver.visible = false;
add(grpGameOver); // add the group to your State.

ゲームのセットアップ方法によっては、グループの scrollFactor 内のオブジェクトを 0 に設定することもできます (ゲーム画面がまったくスクロールしない場合)。

grpGameOver.setAll("scrollFactor", new FlxPoint(0,0));

update()関数では、2 つの部分に分割する必要があります。

if (_isGameOver)
{
    if (FlxG.keys.justReleased("ENTER"))
    {
        grpGameOver.visible = false;
        StartLevel();
    }
}
else
{
    ... the rest of your game logic that you already have ...
}
super.update();

プレーヤー オブジェクトなど、他の場所でユーザー入力に応答するものがある場合はupdate()、そのフラグもチェックするように関数を変更する必要がある場合があることに注意してください。

次に、最後に行う必要があるのは、loseLive()ロジックです。

if (lives_count == 0)
{
    _isGameOver = true;
    grpGameOver.visible = true;
}
else 
...

それはそれを行う必要があります!

さまざまなチュートリアルやサンプル プロジェクトに時間を費やして、Flixel 全般の感覚をつかむことを強くお勧めします。Photon Stormには、遊べる素晴らしい素材がいくつかあります (彼は HTML5 ゲームに飛びついたにもかかわらず)

また、Flixel が更新を処理する方法に慣れたら、状態のupdate()関数を非常に賢く使用して、他のすべてのオブジェクトの更新を個別に変更する代わりに、grpGameOver オブジェクトでのみ update を呼び出すことができることにも注意してください。かなり高度な内容ですが、学ぶ価値はあります。

于 2013-11-11T14:58:23.813 に答える