2Dゲーム制作

【初心者向け】Unityで敵キャラを倒せるようにしよう|当たり判定と削除処理の実装

はじめに

これまでの記事では、プレイヤーが敵に接触するとライフが減る処理を実装しました。今回はその逆、プレイヤーが敵を踏んで「倒す」処理を加えていきます。
簡単な当たり判定と削除処理を組み合わせて、ゲームにアクション性を加えましょう!


1. プレイヤーの下方向の攻撃判定を作る

まずはプレイヤーが敵を踏んだときのみ反応するように、下方向のみに有効な当たり判定を作ります。

方法1:判定用の子オブジェクトを追加

  • Playerオブジェクトの子として、小さな透明のオブジェクトを追加
    ※空のオブジェクトなどで作成
     位置を足元より下に合わせる
  • そこに Box Collider 2D(トリガーにするをオン)を付けて「AttackArea」と命名
  • プレイヤーに PlayerAttack.cs などの新しいスクリプトを追加

2. 攻撃スクリプトを作成

using UnityEngine;

public class PlayerAttack : MonoBehaviour
{
    void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.gameObject.CompareTag("Enemy"))
        {
            Destroy(collision.gameObject);
            Debug.Log("敵を倒した!");
        }
    }
}
  • Enemy オブジェクトの Tag を “Enemy” に設定しておくことを忘れずに!

3. プレイヤーに跳ね返り処理を加える(オプション)

敵を踏んだ際にプレイヤーが少し上に跳ね返ると自然な演出になります。

// PlayerAttack.cs の OnTriggerEnter2D 内、Debug.Log("敵を倒した!");の下に追加:
Rigidbody2D rb = GetComponentInParent();
if (rb != null)
{
    rb.velocity = new Vector2(rb.velocity.x, 5f); // 任意のジャンプ力
}

4. 実行して確認しよう

  • 敵の上から踏んだ時だけ敵が消えるか
  • 横から当たった場合には通常通りプレイヤーがダメージを受けるか

5. まとめ

今回の実装で、ゲームに「敵を倒す」というアクション要素が加わりました。次回は、スコアの加算やエフェクトの追加など、演出面の強化に挑戦していきましょう!