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