敵AIにジャンプ機能を追加したい。でも、どうやって実装すればいいか分からない。
多くの学生が最初に感じるのが、この疑問です。
実は、敵AIのジャンプは、Raycastで障害物を検知することで実現できます。
この記事では、敵AIがジャンプする仕組みについて、追尾・飛び越えジャンプの作り方を解説します。
✨ この記事でわかること
- 敵AIのジャンプ判定
- Raycastを使った障害物検知
- 追尾ジャンプの実装方法
- 飛び越えジャンプの実装方法

敵AIのジャンプは、Raycastで障害物を検知することで実現できます。まずは、基本的な判定から始めましょう。
Unity入門の森を見る 初心者歓迎!動画×プロジェクト一式で本格ゲーム制作を学べる
あなたのオリジナルゲーム、今年こそ完成させませんか?
RPG・アクション・ホラー…Unityで本格ゲームを作りたい人のための学習サイトです。
実際に完成するゲームを題材に、
ソースコード・素材・プロジェクト一式をすべて公開。
仕事や学校の合間の1〜2時間でも、
「写経→改造」で自分のゲームまで作りきれる環境です。
敵AIのジャンプ判定

敵AIがジャンプするには、次の条件が必要です。
- 接地している
- 前方に障害物がある
- ジャンプできる状態である
これらを判定することで、敵AIが適切なタイミングでジャンプできます。
特に、前方の障害物検知が重要です。
Raycastを使った障害物検知

Raycastを使うと、前方の障害物を検知できます。
以下のコードで、基本的な障害物検知ができます。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
using UnityEngine; public class EnemyJumpAI : MonoBehaviour { [SerializeField] private float jumpForce = 10f; [SerializeField] private float checkDistance = 1f; private Rigidbody2D rb; private bool isGrounded; void Start() { rb = GetComponent<Rigidbody2D>(); } void Update() { isGrounded = Physics2D.Raycast(transform.position, Vector2.down, 0.6f, LayerMask.GetMask("Ground")); // 前方の障害物を検知 RaycastHit2D hit = Physics2D.Raycast(transform.position, Vector2.right, checkDistance, LayerMask.GetMask("Wall")); if (hit.collider != null && isGrounded) { // ジャンプ rb.velocity = new Vector2(rb.velocity.x, jumpForce); } } } |
このコードで、前方に障害物があると、敵がジャンプします。
checkDistanceの値を変えると、検知距離が調整できます。

Raycastを使うと、前方の障害物を検知できます。実際に動かしながら、最適な距離を見つけましょう。
追尾ジャンプの実装方法

追尾ジャンプは、プレイヤーを追いかける際に、障害物を飛び越えるジャンプです。
以下のコードで、基本的な追尾ジャンプができます。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
using UnityEngine; public class EnemyChaseJump : MonoBehaviour { [SerializeField] private Transform target; [SerializeField] private float jumpForce = 10f; [SerializeField] private float moveSpeed = 2f; [SerializeField] private float checkDistance = 1f; private Rigidbody2D rb; private bool isGrounded; void Start() { rb = GetComponent<Rigidbody2D>(); } void Update() { isGrounded = Physics2D.Raycast(transform.position, Vector2.down, 0.6f, LayerMask.GetMask("Ground")); // プレイヤーの方向を取得 Vector2 direction = (target.position - transform.position).normalized; // 前方の障害物を検知 RaycastHit2D hit = Physics2D.Raycast(transform.position, direction, checkDistance, LayerMask.GetMask("Wall")); if (hit.collider != null && isGrounded) { // ジャンプ rb.velocity = new Vector2(direction.x * moveSpeed, jumpForce); } else { // 通常の移動 rb.velocity = new Vector2(direction.x * moveSpeed, rb.velocity.y); } } } |
このコードで、プレイヤーを追いかける際に、障害物を飛び越えます。
directionの値を変えると、追尾の方向が変わります。
飛び越えジャンプの実装方法

飛び越えジャンプは、障害物を飛び越えるためのジャンプです。
以下のコードで、基本的な飛び越えジャンプができます。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
using UnityEngine; public class EnemyJumpOver : MonoBehaviour { [SerializeField] private float jumpForce = 10f; [SerializeField] private float checkDistance = 1f; [SerializeField] private float checkHeight = 2f; private Rigidbody2D rb; private bool isGrounded; void Start() { rb = GetComponent<Rigidbody2D>(); } void Update() { isGrounded = Physics2D.Raycast(transform.position, Vector2.down, 0.6f, LayerMask.GetMask("Ground")); // 前方の障害物を検知(高さも考慮) RaycastHit2D hit = Physics2D.Raycast(transform.position + Vector3.up * checkHeight, Vector2.right, checkDistance, LayerMask.GetMask("Wall")); if (hit.collider != null && isGrounded) { // ジャンプ rb.velocity = new Vector2(rb.velocity.x, jumpForce); } } } |
このコードで、前方の障害物を検知して、飛び越えます。
checkHeightの値を変えると、検知する高さが調整できます。
Navmeshを使った3DジャンプAI

3Dでは、Navmeshを使うと、より高度なジャンプAIができます。
Navmeshは、敵が移動できる経路を自動で計算してくれます。
ジャンプが必要な場合は、Navmeshの設定でジャンプリンクを追加します。
これにより、敵が自動でジャンプできるようになります。
Unity入門の森を見る 初心者歓迎!動画×プロジェクト一式で本格ゲーム制作を学べる
実践的な敵AIジャンプを学ぶには

ここまで、敵AIがジャンプする仕組みについて解説してきました。
ただし、実際のゲーム制作では、さらに多くの要素が必要になります。
アニメーション、エフェクト、UI、サウンドなど、全体を体系的に学ぶには、専門の講座が効率的です。
Unity入門の森では、アクションゲームの作り方を、基礎から完成まで丁寧に解説しています。
コードの意味から、なぜその実装方法を選ぶのかまで、しっかり理解できる内容になっています。
アクションゲーム制作に特化した講座なら、効率的にスキルアップできます。
ゲーム制作でスキルを上げたい方は、ぜひチェックしてみてください。
あなたのオリジナルゲーム、今年こそ完成させませんか?
RPG・アクション・ホラー…Unityで本格ゲームを作りたい人のための学習サイトです。
実際に完成するゲームを題材に、
ソースコード・素材・プロジェクト一式をすべて公開。
仕事や学校の合間の1〜2時間でも、
「写経→改造」で自分のゲームまで作りきれる環境です。
まとめ

敵AIがジャンプする仕組みについて解説しました。
要点のまとめ
- Raycastで前方の障害物を検知する
- 接地判定を入れる
- 追尾ジャンプは、プレイヤーの方向を考慮する
- 飛び越えジャンプは、高さも考慮する
基本を押さえれば、あとは応用していくだけです。
まずは、ここで紹介したコードを実際に動かしてみてください。
動かしながら理解を深めていくのが、上達への近道です。
Unity入門の森を見る 初心者歓迎!動画×プロジェクト一式で本格ゲーム制作を学べる



コメント