このパートで行うこと
今回のパートでは、
敵プレハブを作成し、プレイヤーを追うように移動したり、プレイヤーへ攻撃したりさせる。
前回の記事はこちら。
⇒
パート⑦:ステージを切り替える@2Dローグライク公式tutorial解説【Unity2018】
※この記事は、unity公式チュートリアル「2D Roguelike tutorial」を解説した連載記事です。
この連載記事共通の事項(実施している環境等)は以下の記事を参照ください。
⇒ 表紙:2Dローグライク公式tutorial解説【Unity2018】
敵のプレハブを作成しよう
まずはこれまでどおり敵のプレハブを用意するところから始めよう。
コライダーや、描画順の設定はプレイヤーと同じようにしたいので、 「Player」プレハブをコピーして新規にゲームオブジェクトを作成し、「Enemy1」と名前をつけよう。
「Player」プレハブをコピーしたことにより、Player
コンポーネントがアタッチされているはずなので、これは削除しておこう。
「Enemy」プレハブ用のものをこのあと作成していく。
その他、変更が必要な設定を以下に記しておく。
設定箇所 | 設定値 |
---|---|
Tag | Enemy |
SpriteRenderer#Sprite |
「Scavengers_SpriteSheet_6」 |
ここまで設定したら、忘れずに「Enemy1」としてプレハブにしておこう。
敵をフィールドに配置する
今作成した敵プレハブをランダムにフィールドに配置するためにスクリプトを微調整していこう。
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
で敵の数を決め、ランダムな位置の表示する。
またGameManager
はBoardManager#SetupScene
の変更に合わせて、ステージレベルを渡すようにしておこう。
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
に作成した敵プレハブをアタッチしよう。
この状態でゲームを起動すると、ステージ2から敵が1体登場し、ステージ4で2体登場するはずだ。
9/5 に続きを追記します;