ゲーム数学を「使える力」に変えよう!ゲーム講座PDF無料プレゼント中>>

敵がプレイヤーを追う計算の仕組み|方向ベクトルと追尾AIの数学

ジャンプ・重力・移動の数学|ゲーム物理演算を理解する

敵キャラクターをプレイヤーに向かって動かしたい。

でも、どう計算すればいいのか分からない。

実は、敵の追尾は、方向ベクトルと速度の組み合わせで実現できるものです。

これらを理解すれば、自然にプレイヤーを追いかける敵を実装できます。

この記事では、敵がプレイヤーを追う計算の仕組みを、方向ベクトルと追尾AIの数学で解説します。

  • 敵がプレイヤーを追う計算方法が分からない…
  • 方向ベクトルを使った追尾の実装方法が理解できていない。
  • 自然に追いかける敵AIを実装したい。

この記事でわかること

  • 敵追尾計算の基本となる方向ベクトル
  • プレイヤーへの方向の計算方法
  • 追尾速度の制御方法
  • Unityでの敵追尾AIの実装手順
  • 初心者でも理解できる追尾AIの基礎
ゲーム制作を“理解しながら”始めたい方へ
Unity入門の森をチェック Unity初心者でも安心。動画解説+完成サンプル付きで実装まで進められます

【ゲームの作り方講座もプレゼント中!】

敵追尾計算とは何か(ゲーム制作目線)

敵追尾計算の基本

敵の追尾計算は、プレイヤーの位置と敵の位置から方向ベクトルを計算し、その方向に移動させる処理です。

プレイヤーへの方向ベクトルを求め、その方向に速度をかけることで、自然に追いかける動きを実現できます。

敵追尾計算の基本要素は、以下の2つです。

  • 方向ベクトル:プレイヤーへの方向を表すベクトル
  • 追尾速度:敵の移動速度

Unityでは、Vector3.DirectionVector3.MoveTowardsなどの関数を使って、簡単に実装できます。

ゲームでの具体的な使い道

敵追尾計算のゲームでの使用例

敵追尾計算が、ゲームでどう使われているか確認してみましょう。

アクションゲームの敵AI

アクションゲームでは、敵キャラクターがプレイヤーを追いかけます。

方向ベクトルを計算して、プレイヤーに向かって移動させます。

ホラーゲームの追跡

ホラーゲームでは、敵がプレイヤーを追跡するシーンが多くあります。

プレイヤーへの方向を計算して、恐怖感を与える動きを実現します。

シューティングゲームの敵

シューティングゲームでは、敵がプレイヤーに向かって移動します。

方向ベクトルを使って、プレイヤーの位置に近づく動きを実現します。

敵追尾計算が使われる場面

  • アクションゲームの敵AI
  • ホラーゲームの追跡
  • シューティングゲームの敵移動
  • RPGの敵の追尾

作り方は分かった。
でも完成まで行けない人へ

当たり判定・移動・カメラ・AIまで、
実装しながら学べる「永久会員チケット」です。

買い切り 全講座 今後追加も無料
永久会員チケットを見てみる

※ まずは内容を見るだけでOK

敵が追いかける仕組みの核心:数学的アプローチ

敵追尾計算の仕組み

敵がプレイヤーを追いかける動きは、一見複雑に見えますが、数学的には「引き算と正規化」というシンプルなステップで構成されています。

この流れを理解することで、あらゆるゲームジャンルに応用可能な追尾AIの基礎が身につきます。

方向ベクトルを作るための「引き算の法則」

まず、敵から見てプレイヤーがどの方向にいるのかを知る必要があります。

ここで重要なのがベクトルの引き算です。

計算式は、「プレイヤーの位置 - 敵の位置」となります。
ゲーム数学において、方向を出すときは常に「目的地(行きたい方) - 現在地(自分)」と覚えるのがコツです。

逆に計算してしまうと、敵がプレイヤーから逃げていく「逃走AI」になってしまうので注意しましょう。

「正規化」で移動スピードを一定にする

計算して得られたベクトルは、そのままでは「プレイヤーまでの距離」という長さを持っています。

このまま移動に使うと、プレイヤーが遠くにいるほど敵が猛スピードで動き、近づくとスローになるという不自然な挙動になります。

そこで、ベクトルの長さを「1」に変換する「正規化(Normalize)」という処理を行います。

これにより、純粋な「方向」だけのデータになり、敵の移動速度を自由にコントロールできるようになります。

Time.deltaTimeによるフレームレートの同期

最後に、計算した方向に速度を掛け合わせますが、ここで「Time.deltaTime」を忘れてはいけません。

これは、PCの性能に関わらず「1秒間に移動する距離」を一定に保つための魔法の変数です。

これを使うことで、どのユーザーが遊んでも同じ速さで追いかけてくる、公平なゲーム体験を提供できます。

⚠️ 計算の重要ポイント

  • 目的地 - 現在地:この順番で計算すれば、必ず相手の方を向くベクトルが手に入る
  • 正規化(normalized):長さを1にすることで、移動速度を一定に制御できる
  • 毎フレーム更新:Update関数内で計算し続けることで、逃げるプレイヤーを逃さず追尾する

Unityで実装する追尾AIのバリエーション

Unityでの敵追尾計算の実装

原理を理解したら、次はUnityでの具体的な実装方法を見ていきましょう。

単純に近づくだけでなく、少しの工夫でより「生きているような」敵の動きを作ることができます。

最も基本的なベクトル移動

まずは、先ほど解説したベクトルの計算をそのままコードにした例です。

すべてのカスタマイズの基本となります。

「向き」を変えてより自然な動きにする

位置だけを移動させると、敵が正面を向いたまま「スライド移動」しているように見えてしまいます。

追尾AIに「プレイヤーの方を向く」処理を追加してみましょう。

この1行を加えるだけで、敵のモデルが常にプレイヤーを正面に捉えるようになり、追いかけられている恐怖や緊迫感が増します。

MoveTowardsでスムーズに接近する

Unityには、自分でベクトル計算をしなくても、指定した地点まで移動させてくれる便利な関数 Vector3.MoveTowards が用意されています。

コードが短く読みやすくなるため、特別なベクトル操作が必要ない場合はこちらがおすすめです。

応用:視界(範囲)に入ったら追尾を開始する

ゲームを面白くするには、「常に追いかけてくる」のではなく「見つかったら追いかけてくる」仕組みが必要です。

距離を測る Vector3.Distance を使って実装します。

博士
博士
敵の追尾AIは、「方向ベクトル」と「向きの更新」を組み合わせることで劇的にクオリティが上がります。まずは単純な引き算から始めて、慣れてきたら距離による速度変化や視野判定などを組み込んで、あなただけのユニークな敵AIを作ってみてください!

まとめ

敵追尾計算のまとめ

この記事では、敵がプレイヤーを追う計算について見てきました。

重要なポイントをおさらいします。

重要なポイント:

  • 方向ベクトルは、プレイヤーの位置から敵の位置を引いて計算する
  • ベクトルを正規化すれば、速度を直接制御できる
  • Time.deltaTimeを使って、フレームレートに依存しない移動を実現する
  • Vector3.MoveTowardsを使うことで、より簡単に実装できる
  • 視野範囲や距離による速度調整を追加すれば、より高度なAIを実現できる

敵の追尾計算は、ゲーム開発で頻繁に使われる重要な技術です。

方向ベクトルと速度を組み合わせることで、自然にプレイヤーを追いかける動きを実現できます。

基本的な実装から始めて、徐々に機能を追加していくことで、より高度なAIを実現できます。

実際のゲーム実装とセットで学ぶことで、理解が深まるはずです。

Unity入門の森では、敵追尾計算を含む物理演算を、実際のゲーム実装とともに体系的に学べます。

ぜひチェックしてみてください。

ゲーム制作を“理解しながら”始めたい方へ
Unity入門の森をチェック Unity初心者でも安心。動画解説+完成サンプル付きで実装まで進められます

【ゲームの作り方講座もプレゼント中!】

コメント

タイトルとURLをコピーしました