パート⑧:敵を配置する@2Dローグライク公式tutorial解説【Unity2018】【執筆中;】

このパートで行うこと

今回のパートでは、
敵プレハブを作成し、プレイヤーを追うように移動したり、プレイヤーへ攻撃したりさせる。


前回の記事はこちら。
パート⑦:ステージを切り替える@2Dローグライク公式tutorial解説【Unity2018】


※この記事は、unity公式チュートリアル「2D Roguelike tutorial」を解説した連載記事です。
この連載記事共通の事項(実施している環境等)は以下の記事を参照ください。
表紙:2Dローグライク公式tutorial解説【Unity2018】


敵のプレハブを作成しよう

まずはこれまでどおり敵のプレハブを用意するところから始めよう。

コライダーや、描画順の設定はプレイヤーと同じようにしたいので、 「Player」プレハブをコピーして新規にゲームオブジェクトを作成し、「Enemy1」と名前をつけよう。

f:id:snoopopo:20180628210529p:plain

「Player」プレハブをコピーしたことにより、Playerコンポーネントがアタッチされているはずなので、これは削除しておこう。
「Enemy」プレハブ用のものをこのあと作成していく。

その他、変更が必要な設定を以下に記しておく。

設定箇所 設定値
Tag Enemy
SpriteRenderer#Sprite 「Scavengers_SpriteSheet_6」

ここまで設定したら、忘れずに「Enemy1」としてプレハブにしておこう。

敵をフィールドに配置する

今作成した敵プレハブをランダムにフィールドに配置するためにスクリプトを微調整していこう。

BoardManager.cs
public GameObject[] enemyTiles; //敵プレハブ

public void SetupScene(int level) {

    // ~ここまでは変更ないので割愛~

    //敵配置
    int enemyCount = (int)Mathf.Log(level, 2f);
    Debug.Log(enemyCount);
    LayoutObjectAtRandom(enemyTiles, enemyCount, enemyCount);
}

BoardManagerの変更点は、2か所だ。

たった今作成した敵プレハブを設定するためのフィールドenemyTilesの追加と、


BoardManager#SetupSceneの引数にステージレベルを受け取るようにし、
それを元に、Mathf#Logで敵の数を決め、ランダムな位置の表示する。

またGameManagerBoardManager#SetupSceneの変更に合わせて、ステージレベルを渡すようにしておこう。

GameManager.cs
void InitGame(){
        this.doingSetup = true;

        this.levelImage = GameObject.Find("LevelImage");
        this.levelText = GameObject.Find("LevelText").GetComponent<Text>();
        this.levelText.text = "Day " + level;
        this.levelImage.SetActive(true);

        Invoke("HideLevelImage", this.levelStartDelay);
        boardScript.SetupScene(this.level); //引数にステージレベルを渡してあげるように
}

スクリプト側の変更は以上である。 次はエディタ側に戻り、「GameManager」プレハブのBoardManager#EnemyTilesに作成した敵プレハブをアタッチしよう。

f:id:snoopopo:20180903210705p:plain

この状態でゲームを起動すると、ステージ2から敵が1体登場し、ステージ4で2体登場するはずだ。

f:id:snoopopo:20180903211233g:plain



9/5 に続きを追記します;