学習記事一覧 · Unity横スクロールアクション

【学習】敵の種類を増やす(複数パターンの敵)

これまでの学習では、

  • 横スクロールアクションで1種類の敵(左右往復)を作った
  • ステージを複数プラットフォームに拡張した

という形でゲームの幅を広げてきました。

しかし、敵の種類が1つだけでは、ゲームの変化に欠けます。

敵の種類を増やす

ことで、より面白いゲームにします。

今回は 複数パターンの敵(左右往復、上下往復、待機型など)を学びます。

今日作るもの

  • 左右往復する敵(入門16の基本型)
  • 上下往復する敵
  • 待機してから動き出す敵(任意)
  • 各敵をプレハブ化し、Inspector で速度や範囲を設定する

必要なオブジェクト

オブジェクト 役割
EnemyHorizontal(プレハブ) 左右往復。既存の Enemy を流用
EnemyVertical(プレハブ) 上下往復。新規作成
EnemyWait(プレハブ・任意) 一定時間待機後に動く

手順1:左右往復の敵(既存の拡張)

既存の EnemyController に、Inspector で調整できるようにします。

// EnemyController.cs(左右往復)
[SerializeField] private float speed = 2f;
[SerializeField] private float leftLimit = -4f;
[SerializeField] private float rightLimit = 4f;

プレハブごとに speed、leftLimit、rightLimit を変えると、異なる動きの敵になります。


手順2:上下往復の敵を作る

新しいスクリプト EnemyVerticalController.cs を作成します。

using UnityEngine;

public class EnemyVerticalController : MonoBehaviour
{
    [SerializeField] private float speed = 2f;
    [SerializeField] private float topLimit = 2f;
    [SerializeField] private float bottomLimit = -2f;
    private int direction = 1;

    void Update()
    {
        transform.Translate(0, speed * direction * Time.deltaTime, 0);
        if (transform.position.y >= topLimit) direction = -1;
        if (transform.position.y <= bottomLimit) direction = 1;
    }
}
  1. 2D Object → Sprite で EnemyVertical を作成
  2. Box Collider 2D を追加、Tag を "Enemy" に
  3. EnemyVerticalController をアタッチ
  4. プレハブ化

手順3:敵をステージに配置する

  1. 左右往復の敵を床の上に配置
  2. 上下往復の敵をジャンプで避ける位置に配置
  3. 各敵の Inspector で speed、Limit を調整

重要ポイント

  • すべての敵に Tag "Enemy" を付けると、PlayerController の OnCollisionEnter2D で一括判定できる
  • 敵の種類ごとにスクリプトを分けると、動きの追加や変更がしやすい
  • Inspector でパラメータを変えられるようにすると、デザインの調整が楽になる

発展アイデア

  • 敵の種類を enum で管理し、1つのスクリプトで複数パターンを切り替える
  • 敵がプレイヤーを追いかける動きを追加する