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