はじめに
これまでの記事では、キャラクターの左右移動やジャンプ機能を実装してきました。今回は次のステップとして「敵キャラの配置と動き、そしてプレイヤーとの接触判定」を実装していきます。
1. 敵キャラ用スプライトを用意
- 敵の見た目として使用する画像(例:モンスター、スライムなど)を用意
 - Unityの「Assets」フォルダにインポート
 - インポートしたスプライトを「ヒエラルキー」にドラッグしてシーンに配置
 - 名前を「Enemy」に変更
 
2. 敵キャラにコンポーネントを追加
- Box Collider 2D:当たり判定のために追加
 - Rigidbody2D:動きや重力に反応させる(ボディタイプを”キネマティック”に設定)
- キネマティックにすることで、物理的に反応させずにスクリプトで制御が可能になります
 
 
3. 敵の移動スクリプトを作成
EnemyController.cs というスクリプトを作成し、以下のコードを記述します:
using UnityEngine;
public class EnemyController : MonoBehaviour
{
    public float moveSpeed = 2f;
    public float moveRange = 3f;
    private Vector3 startPosition;
    private int direction = 1;
    void Start()
    {
        startPosition = transform.position;
    }
    void Update()
    {
        transform.Translate(Vector2.right * moveSpeed * direction * Time.deltaTime);
        if (Mathf.Abs(transform.position.x - startPosition.x) > moveRange)
        {
            direction *= -1; // 向きを反転
        }
    }
}
- このスクリプトは、敵キャラが一定の範囲内で左右に移動する簡単なパターンを実現します
 - スクリプトを「Enemy」に追加
 
4. プレイヤーとの接触判定
PlayerController にある OnCollisionEnter2D 関数を以下のように書き換えます:
void OnCollisionEnter2D(Collision2D collision)
{
    if (collision.gameObject.CompareTag("Ground"))
    {
        isGrounded = true;
    }
    else if (collision.gameObject.CompareTag("Enemy"))
    {
        Debug.Log("敵に当たった!");
        // ダメージ処理やリトライ処理などをここに追加
    }
}
- Enemyオブジェクトの「Tag」を「Enemy」に設定するのを忘れずに!
※タグの追加はタグ → タグを追加をクリックし、+ボタンをクリック
Enemyと入力したらSaveをクリック 
5. 実行して確認しよう
- 敵が左右に動いているか
 - プレイヤーと接触したときにログが出るか
 
6. まとめ
これで2Dゲームに敵キャラを追加できました! 今後は、ダメージ処理や敵のパターン追加、倒せる仕組みなどを実装することで、ゲームらしさがどんどん増していきます。
