敵が同じ場所で止まったまま、プレイヤーを無視する——そんな状態では、ゲームに緊張感が生まれません。
最初から複雑な行動木を作る必要はありません。
パトロール → 発見 → 追尾の3状態だけでも、十分「動いている敵」に感じられます。
この記事では、2Dアクション向けの距離判定AIと、3D向けのNavMeshAgent概要を整理し、089ボス戦へ発展する土台も示します。
- 敵が置いてあるだけで、一切動かない…
- 追尾のコードは書いたが、壁をすり抜けて変な動きをする。
- NavMeshと距離判定、どちらを使えばいいか分からない。
✨ この記事でわかること
- パトロール・追跡・待機の3状態AIの設計
- 2Dでの距離判定と左右往復パトロール
- プレイヤー発見時の状態切替の実装
- 3D NavMeshAgentを使った追尾の概要
- 090当たり判定・080攻撃との接続
- 初心者でも理解できる解説
\プログラミング未経験でも大丈夫!まずは1本作り切ろう/
初心者が最初に選ぶならコレ
Unity ノンフィールドRPG
+スレスパ風JRPG講座
Unity6対応・スマホ化対応の最新カリキュラム。「何から始めればいいかわからない」という初心者でも、ステップごとに手を動かすだけでRPGが完成します。
憧れのアクションゲームに挑戦
Unity 2Dアクションゲーム
の作り方講座(ロックマン風)
初心者でもロックマン風の横スクロールACTが作れる講座。7ステージ+ラスボスという本格構成で、スマホ化・広告実装まで対応。「自分のゲームをリリースしたい」夢を叶えます。
3Dゲーム開発の入口はここ
ゼルダ風3Dアクションゲーム
の作り方講座
「3Dゲームって難しそう…」と感じている初心者向けの講座。全16回でゼルダ風3Dアクションがスマホ対応で作れるようになります。3D開発の基礎がしっかり身につきます。
敵AIの基本は3状態から
敵の行動は、enumで状態を管理するのがシンプルです。
266の行動パターン記事へ進む前に、この3つを確実に動かしましょう。
| 状態 | 行動 | 切り替え条件 |
|---|---|---|
| Patrol(パトロール) | 左右に一定距離を往復 | プレイヤーが視界内に入る |
| Chase(追尾) | プレイヤー方向へ移動 | プレイヤーが視界外に出る |
| Idle(待機) | その場で停止(任意) | 初期状態や攻撃前の溜め |
視界は「距離+方向」の簡易判定で十分です。
最初は距離だけ(例:5m以内)でも動きます。
2D敵AIの実装例
横スクロール2Dでは、Transform.positionを直接動かす方法が扱いやすいです。
Rigidbody2Dを使う場合はMovePositionで移動します。
using UnityEngine;
public enum EnemyState { Patrol, Chase }
public class EnemyAI2D : MonoBehaviour
{
public Transform player;
public float patrolSpeed = 2f;
public float chaseSpeed = 4f;
public float detectRange = 5f;
public float patrolLeft = -3f;
public float patrolRight = 3f;
EnemyState state = EnemyState.Patrol;
int direction = 1;
float startX;
void Start => startX = transform.position.x;
void Update
{
if (player == null) return;
float dist = Vector2.Distance(transform.position, player.position);
state = dist <= detectRange ? EnemyState.Chase : EnemyState.Patrol;
if (state == EnemyState.Chase)
MoveToward(player.position, chaseSpeed);
else
Patrol;
}
void Patrol
{
transform.Translate(Vector2.right * direction * patrolSpeed * Time.deltaTime);
if (transform.position.x >= startX + patrolRight) direction = -1;
if (transform.position.x <= startX + patrolLeft) direction = 1;
}
void MoveToward(Vector3 target, float speed)
{
Vector3 dir = (target - transform.position).normalized;
transform.position += dir * speed * Time.deltaTime;
if (dir.x != 0) transform.localScale = new Vector3(Mathf.Sign(dir.x), 1, 1);
}
}
InspectorでplayerにプレイヤーのTransformを割り当てます。
FindWithTag("Player")で取得する方法でもよいです。

最初はパトロールだけ動かし、プレイヤーが近づいたらDebug.Logを出すテストから始めましょう。
状態切替が確認できてから移動処理を足すと迷いません。
視界判定を少しだけ強化する
距離だけだと壁の向こうのプレイヤーも見えてしまいます。
2DならPhysics2D.Raycastで障害物を挟んでいないか確認できます。
bool CanSeePlayer
{
Vector2 dir = player.position - transform.position;
RaycastHit2D hit = Physics2D.Raycast(transform.position, dir.normalized, detectRange);
return hit.collider != null && hit.collider.CompareTag("Player");
}
090の当たり判定と138のLayer設定を組み合わせ、Groundレイヤーに当たったら視界外と判定する設計も可能です。
3D NavMeshAgentの概要
3Dアクションでは、NavMeshを焼いてNavMeshAgentで移動させる方法が定番です。
045のNavMesh記事で環境設定を済ませたうえで、次のように目的地を更新します。
- NavMeshAgentコンポーネントを敵に追加
- Chase状態で
agent.SetDestination(player.position) - Patrol状態でウェイポイント間を
SetDestinationで巡回
2Dと3Dで移動の仕組みは違いますが、Patrol / Chase の状態設計は共通です。
089のボス戦も、この土台の上に攻撃パターンを足していきます。
- STEP1EnemyStateのenumを定義
PatrolとChaseから開始
- STEP2パトロール移動を実装
左右の境界で方向反転
- STEP3距離でChaseに切替
detectRange以内で追尾開始
- STEP4スプライトの向き反転
localScale.xで左右を向く
- STEP5080攻撃と接続
Chase中に攻撃範囲内なら攻撃状態へ
080攻撃・090当たり判定との接続
敵がプレイヤーに近づいたら攻撃する場合、Chase状態のうち距離が1m以下になったらAttack状態へ切り替えます。
080の攻撃実装で作ったAttackを呼び、クールタイム中はIdleに戻す流れが自然です。
スポーン位置を固定したい場合は、088のパトロール開始地点(startX)をスポナー側で設定し、敵プレハブをInstantiateする141の記事と組み合わせます。
ウェーブ制のシューティングでは、一定間隔で敵を生成しながら同じEnemyAI2Dを使い回す設計が効率的です。
プレイヤーへのダメージは、090のOnTriggerEnter2Dで判定します。
敵の攻撃HitboxにIs Triggerを付け、Playerタグと衝突したら081のHPを減らします。
つまずきやすいポイント
敵AIでよくある問題は次のとおりです。
- 敵が動かない → player参照がnull、またはUpdateが止まっている
- 壁をすり抜ける → Rigidbody2DとCollider2Dを付け、KinematicでMovePositionを使う
- 追尾がガクガクする → 移動速度が高すぎる。
chaseSpeedを下げる - NavMeshで動かない → 敵がNavMesh上にいない。
Bakeし直す
SceneビューでdetectRangeをGizmos描画すると、調整がしやすくなります。
OnDrawGizmosSelectedでワイヤー球を表示する方法が便利です。
敵を複数配置する場合は、同じEnemyAI2Dスクリプトをそのまま使えます。
patrolLeftとpatrolRightをInspectorで個別に設定し、startXをStartで記録する設計のため、配置位置ごとに往復範囲が自動で決まります。
264の2D敵AI特化記事も、同じ考え方をより詳しく扱っています。

行動木や複雑なAIは後回しで大丈夫です。
1体の敵がパトロールして追いかけてくる——それだけでゲームの印象は大きく変わりますよ。
記事を読んで「作ってみたい!」と思ったら!初心者でも1本完成できる講座で実力をつけよう
知識を読むだけで終わらせるのはもったいない。実際に手を動かしてゲームを1本完成させることで、理解が一気に深まります。プログラミング未経験からでも取り組める講座で、ゲーム開発の第一歩を踏み出しましょう。
Unity ノンフィールドRPG+スレスパ風JRPG講座【Unity6対応!初心者でもデッキ構築×JRPGをスマホ向けに作れる!】

- Unity6対応・スマホ化対応で最新環境のゲーム開発が学べる
- Slay the Spire風のデッキ構築システム×JRPGの組み合わせを実装
- 初心者でも迷わず進められる丁寧な解説構成
- ノンフィールドRPGとデッキ構築JRPGの2つをまとめて学べるセット講座
Unity ノンフィールドRPGの作り方講座+Slay the Spire風デッキ構築JRPGの作り方講座は、プログラミング未経験の初心者でも取り組みやすい、ステップバイステップ形式の講座です。
Unity6対応・スマホ化対応の最新カリキュラムで、読んで「なるほど」と思った知識を、実際に動くゲームとして形にする体験ができます。
「何から始めればいいかわからない…」という初心者が最初に選ぶ一本として最適な講座です。
Unity6対応・スマホ化対応の最新カリキュラム
ゼロからでもRPGを完成させよう
→ スレスパ風デッキ構築JRPG講座を見てみる
初心者でもスマホ対応のRPGが作れる!まずは1本完成を目指そう!
Unity 2Dアクションゲームの作り方講座(ロックマン風)【全16回!初心者でもスマホ化・広告実装まで対応した本格横スクロールACTが作れる!】

- ロックマン・マリオ・カービィのような横スクロールACTをゼロから開発
- 7ステージ+ラスボスステージの本格的なゲーム設計を初心者でも実現
- スマホ化・AdMob広告実装まで対応してリリースまで見据えた構成
- 敵AI15体・多彩なマップギミック・武器システムを完全実装
- 完全オリジナルゲームをアセット不使用で素材提供付きで制作
Unity 2Dアクションゲームの作り方講座(ロックマン風)は、ロックマン・スーパーマリオ・星のカービィのような2D横スクロールアクションゲームを、初心者でもゼロから開発できるようになる講座です。
全16回で当たり判定・物理挙動・敵AIの知識を実際のゲームコードとして実装する体験が詰め込まれています。スマホ化・広告実装まで対応しているため、「作って終わり」ではなくリリースまで見据えた実践スキルが身につきます。
「憧れのアクションゲームを自分の手で作ってみたい」という初心者に強くおすすめの一本です。
スマホ化・広告実装まで対応した本格横スクロールACT
初心者でもロックマン風2Dアクションをリリースまで作り上げよう
→ 2Dアクションゲームの作り方講座を見てみる
初心者でも本格ACTが完成する!広告収益まで視野に入れた実践スキルを手に入れよう!
ゼルダ風3Dアクションゲームの作り方講座【全16回!初心者でも3Dアクションがスマホ対応で作れる!】

- ゼルダの伝説・モンハン・原神のような3Dアクションをゼロから開発
- 「3Dは難しそう」と感じている初心者でも取り組みやすい丁寧な解説構成
- スマホ化対応で実機で動かせるゲームが完成
- アセットを使った実践的なゲーム開発手法が身につく
- 画像・動画・全ソースコード公開の充実したサポート
ゼルダ風3Dアクションゲームの作り方講座は、「3Dゲームは難しそう…」と感じている初心者こそおすすめの入門講座です。
全16回の丁寧な解説で、ゼルダの伝説・モンハン・原神のような本格的な3Dアクションゲームを確実に完成まで導きます。スマホ化対応で実機で動かせるため、初めて3Dゲームを作り上げた達成感がひときわ大きい講座です。
「3Dゲームを自分でも作れるか試してみたい」という初心者の最初の一歩として最適です。
初心者でも3Dアクションがスマホ対応で完成する
ゼルダ風3Dアクションゲームで3D開発の壁を一気に突破しよう
→ ゼルダ風3Dアクションゲームの作り方講座を見てみる
全16回でスマホで動くオリジナル3Dゲームを完成させよう!
まとめ
Unityの敵AIは、Patrol / Chase の状態切替 → 2Dは距離判定で移動 → 3DはNavMeshAgent → 080攻撃と接続、この順で実装すると迷いにくいです。
089のボス戦は、この基本の上にHPと攻撃パターンを足していきます。
動く敵が1体いるだけで、ステージの雰囲気ががらりと変わります。
敵AIからボス戦まで一連で学びたい方は、Unity入門の森の2Dアクション講座も、パトロールからボスまで追える教材として参考になります。
今日は左右往復する敵を1体置き、プレイヤーが近づいたら追いかけてくるところまで進めてみてください。
敵の移動速度は、プレイヤーより少し遅めに設定すると「追いつかれそうで追いつかれない」緊張感が生まれます。
chaseSpeedをプレイヤーの移動速度の80%程度から調整してみましょう。



コメント