はじめに
これまでの記事では、プレイヤーが敵に接触するとライフが減る処理を実装しました。今回はその逆、プレイヤーが敵を踏んで「倒す」処理を加えていきます。
簡単な当たり判定と削除処理を組み合わせて、ゲームにアクション性を加えましょう!
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. まとめ
今回の実装で、ゲームに「敵を倒す」というアクション要素が加わりました。次回は、スコアの加算やエフェクトの追加など、演出面の強化に挑戦していきましょう!