敵AIを作りたい。でも、追尾や攻撃の実装が分からない。
多くの学生が最初に感じるのが、この疑問です。
実は、敵AIは、3つの基本パターンで構成されています。
この記事では、敵AIの基本ロジックとして、追尾・攻撃・退避の3パターンを解説します。
✨ この記事でわかること
- 追尾AIの実装方法
- 攻撃AIの実装方法
- 退避AIの実装方法
- 3パターンの組み合わせ

敵AIは、3つの基本パターンで構成されています。まずは、それぞれの特徴を理解しましょう。
\あなたにピッタリのアクションゲーム制作講座を見つけよう!/
おすすめ第1位
Unity 2Dアクションゲーム
の作り方講座(ロックマン風)
ロックマン風の横スクロールACTをスマホ化・広告実装まで対応。ゲームのリリースまでを見据えた実践的なカリキュラムで、作って終わりにならない一本です。
3D入門に最適
ゼルダ風3Dアクションゲーム
の作り方講座
ゼルダ風の3Dアクションをスマホ対応で作れる入門講座。全16回で初心者でも3Dゲーム開発の基礎からしっかり習得できます。
3プラットフォーム対応
Unity FPSゲームの
作り方講座
FPS・VR・スマホの3プラットフォームに同時対応。1本作るだけで3つのゲームが完成する圧倒的なコスパが魅力の講座です。
あなたのオリジナルゲーム、今年こそ完成させませんか?
RPG・アクション・ホラー…Unityで本格ゲームを作りたい人のための学習サイトです。
実際に完成するゲームを題材に、
ソースコード・素材・プロジェクト一式をすべて公開。
仕事や学校の合間の1〜2時間でも、
「写経→改造」で自分のゲームまで作りきれる環境です。
追尾AIの実装方法

追尾AIは、プレイヤーを追いかけるAIです。
主な実装方法は次の通りです。
- プレイヤーの位置を取得
- プレイヤーへの方向を計算
- 敵の向きを調整
- 一定の速度で移動
これらを組み合わせることで、基本的な追尾AIができます。
毎フレーム、プレイヤーの位置との差を計算し、その方向へ移動させることで、常にプレイヤーを追い続ける動きになります。
攻撃AIの実装方法

攻撃AIは、プレイヤーに近づいたときに攻撃するAIです。
主な実装方法は次の通りです。
- プレイヤーとの距離を計算
- 一定距離以内なら攻撃
- 攻撃のクールタイムを設定
- 攻撃パターンを実装
これらを組み合わせることで、基本的な攻撃AIができます。
プレイヤーとの距離を常に確認し、一定の距離に入ったタイミングで攻撃処理を実行します。
この仕組みを入れると、敵はただ近づくだけでなく、タイミングを見て攻撃してくる“ゲームらしい動き”になります。

攻撃AIは、「近づいたかどうか」を条件にするだけで作れます。
まずは攻撃できる距離を1つ決めて、そこから調整していきましょう。
退避AIの実装方法

退避AIは、プレイヤーから離れるAIです。
主な実装方法は次の通りです。
- プレイヤーとの距離を計算
- 一定距離以内なら退避
- プレイヤーと逆方向に移動
- 退避時間を設定
これらを組み合わせることで、基本的な退避AIができます。
プレイヤーが近づきすぎた場合、一定の距離を保つように後退する処理を行います。
この動きを入れることで、敵は無理に突っ込まず、間合いを意識して立ち回るようになります。
追尾・攻撃・退避を組み合わせた行動パターン

3パターンの組み合わせは、次の通りです。
| 距離 | 行動 | パターン | 説明 |
| 遠い | 追尾 | 追尾AI | プレイヤーを追いかける |
| 中程度 | 攻撃 | 攻撃AI | プレイヤーを攻撃する |
| 近い | 退避 | 退避AI | プレイヤーから離れる |
距離に応じて行動を切り替えることで、敵はプレイヤーの動きに反応しながら立ち回るようになります。
遠いときは追尾し、攻め込むと攻撃、詰めすぎると距離を取る――
そんな手ごわい敵の動きを作れます。
敵AIをうまく動かすための実装ポイント

実装のポイントは、次の通りです。
- 距離の閾値を設定する
→ 行動が頻繁に切り替わらないようにするため - 状態遷移を管理する
→ 今どの行動をしているか分からなくなるのを防ぐため - 各パターンの処理を分離する
→ 修正や調整をしやすくするため - パラメータを調整する
→ 敵の強さや性格を変えやすくするため
これらを意識するだけで、敵の動きが安定し、調整もしやすくなります。
距離の閾値を意識するだけで、行動の切り替えがぐっと安定します。
初心者がつまづきやすい敵AI実装あるあると対策

敵AIはロジック自体はシンプルでも、実装方法によっては思った通りに動かず、原因が分からなくて手が止まってしまうことがあります。

ここでは、初心者が特につまづきやすいポイントと、その対策をコードサンプル付きで紹介します。
① 行動が切り替わりすぎて、敵がガタガタ動いてしまう
追尾と攻撃を「プレイヤーとの距離」で切り替えるとき、条件がシビアすぎると、1フレームごとに行動が切り替わってしまい、敵がその場で小刻みにガタガタ動くことがあります。
よくあるパターンは、次のように距離だけで即座に状態を切り替えているケースです。
|
1 2 3 4 5 6 7 8 9 10 |
if (distance < attackDistance) { state = EnemyState.Attack; } else { state = EnemyState.Chase; } |
この場合、プレイヤーとの距離が「攻撃距離ギリギリ」をうろうろすると、Attack と Chase が何度も切り替わってしまいます。
対策としては、「行動を切り替えるための距離」と「行動をやめる距離」に少し差をつけて、状態が頻繁に変わらないようにする方法が有効です(ヒステリシスを持たせるイメージです)。
以下は、追尾と攻撃の2状態に絞ったシンプルなサンプルです。
|
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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
using UnityEngine; public class SimpleEnemyAI : MonoBehaviour { public Transform player; public float chaseSpeed = 3f; public float attackDistance = 3f; // 攻撃に切り替える距離 public float attackCancelDistance = 4f; // 攻撃をやめて追尾に戻る距離 private enum EnemyState { Chase, Attack } private EnemyState state = EnemyState.Chase; void Update() { if (player == null) return; float distance = Vector3.Distance(transform.position, player.position); // 状態の切り替え switch (state) { case EnemyState.Chase: if (distance < attackDistance) { state = EnemyState.Attack; } break; case EnemyState.Attack: if (distance > attackCancelDistance) { state = EnemyState.Chase; } break; } // 状態ごとの処理 if (state == EnemyState.Chase) { Vector3 dir = (player.position - transform.position).normalized; transform.position += dir * chaseSpeed * Time.deltaTime; } else if (state == EnemyState.Attack) { // 攻撃アニメーション再生や攻撃処理をここに書く // Debug.Log("Attack!"); } } } |
ポイントは、「攻撃を開始する距離」と「攻撃をやめる距離」を別にしていることです。
これにより、攻撃距離付近を行ったり来たりしても、状態がガタガタ変わりにくくなります。
② 追尾・攻撃・退避を一度に実装して、どこが悪いのか分からなくなる
もう一つよくあるのが、「追尾・攻撃・退避の3つを一気に実装してしまい、動かない原因がどこにあるのか分からなくなる」パターンです。
最初から全部入れようとすると、追尾の計算ミスなのか、攻撃条件なのか、退避の方向なのか、問題の切り分けが難しくなってしまいます。
対策としておすすめなのは、「まずは追尾だけ」の最小構成で敵を動かしてみて、そのあとで攻撃や退避を足していく方法です。
まずは、プレイヤーを追いかけるだけのシンプルなスクリプトから始めます。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
using UnityEngine; public class ChaseOnlyEnemy : MonoBehaviour { public Transform player; public float chaseSpeed = 3f; void Update() { if (player == null) return; Vector3 dir = (player.position - transform.position).normalized; transform.position += dir * chaseSpeed * Time.deltaTime; } } |
このスクリプトを敵キャラクターにアタッチし、player にプレイヤーの Transform を設定した状態で、まずは「ちゃんと追いかけてくるかどうか」だけを確認します。
追尾が問題なく動くことを確認してから、次のように距離判定を足して攻撃行動を追加していきます。
|
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 |
using UnityEngine; public class ChaseAndAttackEnemy : MonoBehaviour { public Transform player; public float chaseSpeed = 3f; public float attackDistance = 3f; void Update() { if (player == null) return; float distance = Vector3.Distance(transform.position, player.position); if (distance > attackDistance) { // 追尾 Vector3 dir = (player.position - transform.position).normalized; transform.position += dir * chaseSpeed * Time.deltaTime; } else { // 攻撃処理(仮) // Debug.Log("Attack!"); } } } |
このように、「まずは追尾だけ」「次に追尾+攻撃」と段階を踏むことで、どのタイミングで問題が発生したのかを追いやすくなります。退避AIを追加するのは、そのあとでも十分です。
敵AIは、一気に完成形を目指すほど難しく感じてしまいます。まずはシンプルな追尾だけを確実に動かし、少しずつ条件や行動を足していくことで、「どこでつまづいているのか」が見えやすくなります。
実践的な敵AI制作を学ぶには

ここまで、敵AIの基本ロジックについて解説してきました。
敵AIは、3つの基本パターンで構成されています。
Unity入門の森では、Unityを使ったアクションゲームの作り方を、基礎から完成まで丁寧に解説しています。
コードの意味から、なぜその実装方法を選ぶのかまで、しっかり理解できる内容になっています。
アクションゲーム制作に特化した講座なら、効率的にスキルアップできます。
ゲーム制作でスキルを上げたい方は、ぜひチェックしてみてください。
アクションゲームを作りたいなら!Unity入門の森のアクション制作講座で本格ゲーム開発に挑戦しよう
Unity入門の森には、横スクロール・3Dアクション・FPSまで幅広いアクションゲームを作れる講座が揃っています。作りたいジャンルや目標に合わせて選んでみてください。
Unity 2Dアクションゲームの作り方講座(ロックマン風)【全16回!スマホ化・広告実装まで対応した本格横スクロールACTを作れる!】

- ロックマン・マリオ・カービィのような横スクロールACTをゼロから開発
- 7ステージ+ラスボスステージの市販ゲームに近い本格的なゲーム設計
- スマホ化・AdMob広告実装まで対応してリリースまで見据えた構成
- 敵AI15体・多彩なマップギミック・武器システムを完全実装
- 完全オリジナルゲームをアセット不使用で素材提供付きで制作
Unity 2Dアクションゲームの作り方講座(ロックマン風)は、ロックマン・スーパーマリオ・星のカービィのような2D横スクロールアクションゲームを開発できるようになる本格的な講座です。
ステージ選択・ボスの弱点システム・新武器ゲットというロックマン風のゲーム設計はもちろん、スマホ実機ビルド・AdMob広告実装(リワード・インタースティシャル)まで対応。作って終わりではなく、リリースして収益化するところまで学べます。
書籍や他のチュートリアルでは扱われていないリリースレベルの開発スキルを習得したい人に、自信を持っておすすめできる一本です。
スマホ化・広告実装まで対応した本格横スクロールACT
ロックマン風の2Dアクションゲームをリリースまで作り上げよう
→ Unity 2Dアクションゲームの作り方講座を見てみる
広告収益まで視野に入れた実践スキルを今すぐ手に入れよう!
ゼルダ風3Dアクションゲームの作り方講座【全16回!初心者でも3Dアクションがスマホ対応で作れる!】

- ゼルダの伝説・モンハン・原神のような3Dアクションをゼロから開発
- 初心者でも取り組みやすい丁寧な解説構成
- スマホ化対応で実機で動かせるゲームが完成
- 画像・動画・全ソースコード公開の充実したサポート
- アセットを使った実践的なゲーム開発手法が身につく
ゼルダ風3Dアクションゲームの作り方講座は、ゼルダの伝説・モンハン・原神のような本格的な3Dアクションゲームを作りたい人におすすめの入門講座です。
3Dゲーム開発の基礎からスマホ化まで全16回でしっかり習得できます。画像・動画・全ソースコードを公開した丁寧な解説で、初めて3Dゲームに挑戦する人でも確実に完成まで到達できる構成です。
「3Dゲームはなんだか難しそう」と感じている人が最初の一歩を踏み出すのに最適な講座です。
初心者でも3Dアクションがスマホ対応で完成する
ゼルダ風3Dアクションゲームで3D開発の第一歩を踏み出そう
→ ゼルダ風3Dアクションゲームの作り方講座を見てみる
3D開発の壁を一気に突破!スマホで動くオリジナルゲームを完成させよう!
Unity FPSゲームの作り方講座【全17回!FPS・VR・スマホの3プラットフォームを同時に作れる!】

- APEX・バトルフィールド風のFPSゲームをゼロから開発
- FPS・スマホ・VRの3プラットフォームに同時対応
- 書籍では学べないVR対応弓矢FPSのオリジナリティ高い開発手法
- 地上・空中の敵AIや弓矢チャージショットなど本格システムを実装
- 初心者でも安心の丁寧な解説と完成プロジェクトファイル付き
Unity FPSゲームの作り方講座は、APEX・バトルフィールド・Call of Dutyのような一人称視点のFPSゲームを作るための講座です。
弓矢を使ったオリジナリティの高いFPSをベースに、PC・スマホ・VRの3プラットフォームに同時対応した開発手法を全17回で習得できます。VR空間で弓を構えて矢を射るという高度なアクションの実装まで、書籍では学べないスキルが身につきます。
1本の講座でFPS・スマホ・VRを同時に作れるのはこの講座ならでは。3Dゲーム開発の幅を一気に広げたい中・上級者志望の方にもおすすめです。
FPS・スマホ・VRの3プラットフォームを同時に完成させる
1本作るだけで3つのゲームが完成する圧倒的な開発体験を手に入れよう
→ Unity FPSゲームの作り方講座を見てみる
書籍では学べないVR対応FPSで、一歩先の3Dゲーム開発スキルを今すぐ!
まとめ

敵AIの基本ロジックについて解説しました。
追尾・攻撃・退避というシンプルな行動でも、距離に応じて切り替えるだけで、敵はプレイヤーの動きに反応するようになります。
要点のまとめ
- 追尾AIは、プレイヤーを追いかける
- 攻撃AIは、近づいたタイミングで攻撃する
- 退避AIは、近づきすぎたときに距離を取る
- 行動を切り替えることで、敵はより手ごわくなる
基本を押さえれば、あとは行動を組み合わせていくだけです。
まずは、シンプルな追尾AIから動かしてみてください。
「敵が追ってくる」その瞬間、敵AIは難しいものから、作って楽しいものに変わります。
動かしながら少しずつ調整することが、敵AIを理解するいちばんの近道です。
あなたのオリジナルゲーム、今年こそ完成させませんか?
RPG・アクション・ホラー…Unityで本格ゲームを作りたい人のための学習サイトです。
実際に完成するゲームを題材に、
ソースコード・素材・プロジェクト一式をすべて公開。
仕事や学校の合間の1〜2時間でも、
「写経→改造」で自分のゲームまで作りきれる環境です。





コメント