はじめに
これまでの記事では、キャラクターの左右移動やジャンプ機能を実装してきました。今回は次のステップとして「敵キャラの配置と動き、そしてプレイヤーとの接触判定」を実装していきます。
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ゲームに敵キャラを追加できました! 今後は、ダメージ処理や敵のパターン追加、倒せる仕組みなどを実装することで、ゲームらしさがどんどん増していきます。
