サイトのトップへ戻る

AndEngineドキュメント 日本語訳

Part 9. ゲームシーンを作成する:

そして遂にこの記事で、アプリケーションで最も重要な部分、ゲームプレイシーンを作成します。
  • BaseSceneを継承した、 GameScene という名前のクラスを新規に作成します;
    package com.matimdev.scene;
    
    import com.matimdev.base.BaseScene;
    import com.matimdev.manager.SceneManager.SceneType;
    
    public class GameScene extends BaseScene
    {
        @Override
        public void createScene()
        {
            
        }
    
        @Override
        public void onBackKeyPressed()
        {
            
        }
    
        @Override
        public SceneType getSceneType()
        {
            return SceneType.SCENE_GAME;
        }
    
        @Override
        public void disposeScene()
        {
            
        }
    }
    


1. 背景を作成する:
この例では、背景としてシンプルなものを使用します。単色を使用します。 また、独自の画像を使用したり、parallax などのようなより高度な背景を作成することもできます。
private void createBackground()
{
    setBackground(new Background(Color.BLUE));
}


2. HUDを作成する:
今回は HUDが必要になります - これはゲームコントローラーとスコアテキストを表示するのに使用されます。
  • HUD用のprivate フィールドと、それを初期化するメソッドを新規に作成します。
    private HUD gameHUD;
    
    private void createHUD()
    {
        gameHUD = new HUD();
        camera.setHUD(gameHUD);
    }
    
  • スコアテキスト用のフィールドを新規に作成し、それをcreateHUD メソッド内で初期化します:
    private Text scoreText;
    
    private void createHUD()
    {
        gameHUD = new HUD();
        
        // CREATE SCORE TEXT
        scoreText = new Text(20, 420, resourcesManager.font, "Score: 0123456789", new TextOptions(HorizontalAlign.LEFT), vbom);
        scoreText.setAnchorCenter(0, 0);    
        scoreText.setText("Score: 0");
        gameHUD.attachChild(scoreText);
        
        camera.setHUD(gameHUD);
    }
    
    スコアtextを作成してHUDに貼り付けています。重要なのは、スコアを変更する際に使用する可能性のある全ての文字 (特に全ての数字)で、textを初期化することです。 何のためにそのようなことをするのでしょうか? それは"メモリの事前確保"のためです - そうしないと、初期化時に設定されなかった新しい文字を使ってtextを変更する度に、目に見えてスローダウンが発生するためです。 
  • スコアカウントを保持するためのint フィールドと、スコアを司るメソッドを新規に作成します:
    private int score = 0;
    
    private void addToScore(int i)
    {
        score += i;
        scoreText.setText("Score: " + score);
    }
    

別の章では、適切なコントローラーの作成について説明します.



3. 物理オブジェクトを作成する:
今回のゲームでは物理オブジェクトが必要なので、それを作成します。
  • PhysicsWorld 用の新しいフィールドを作成し、それを初期化するためのメソッドを作成します。
    private PhysicsWorld physicsWorld;
    
    private void createPhysics()
    {
        physicsWorld = new FixedStepPhysicsWorld(60, new Vector2(0, -17), false); 
        registerUpdateHandler(physicsWorld);
    }
    
    今回はFixedStepPhysicsWorld クラスを使用しており、このクラスは毎秒ごとのstep量を設定します(今回の場合は60)。 二つ目のパラメータは、使用する重力パラメータです。編集するかどうかはあなた次第で、あなたの要件よって異なります。 最後に、PhysicsWorld をアップデートハンドラとしてsceneに登録します。
  • createScene() メソッド内で、作成した全てのメソッドを実行します:
    @Override
    public void createScene()
    {
        createBackground();
        createHUD();
        createPhysics();
    }
    

これで完了です。この記事では、今のところ基本的なゲームシーンの設定を説明しています。 次の記事で、コントローラー、プレイヤー、ステージの読み込みと構築、ステージロジックといった大きな実装を追加します。 ゲームシーンの読み込み・表示処理を設定するには、次の記事を確認してください。

前の記事 次の記事



エンジェル戦記