【学習】敵の種類を増やす(複数パターンの敵)
これまでの学習では、
- 横スクロールアクションで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;
}
}- 2D Object → Sprite で EnemyVertical を作成
- Box Collider 2D を追加、Tag を "Enemy" に
- EnemyVerticalController をアタッチ
- プレハブ化
手順3:敵をステージに配置する
- 左右往復の敵を床の上に配置
- 上下往復の敵をジャンプで避ける位置に配置
- 各敵の Inspector で speed、Limit を調整
重要ポイント
- すべての敵に Tag "Enemy" を付けると、PlayerController の OnCollisionEnter2D で一括判定できる
- 敵の種類ごとにスクリプトを分けると、動きの追加や変更がしやすい
- Inspector でパラメータを変えられるようにすると、デザインの調整が楽になる
発展アイデア
- 敵の種類を enum で管理し、1つのスクリプトで複数パターンを切り替える
- 敵がプレイヤーを追いかける動きを追加する