[Unity6] NavMashAgentの全プロパティ解説。

(2025/02/18)
[Unity6] Nav Mash Agentのプロパティすべて解説

開発環境
  • Unityのバージョン : 6000.0.36f1
  • サンプルシーン

    NavMeshAgentの各プロパティの動作を確認するため、以下のようなシンプルなシーンを作成しました。 赤いオブジェクトにNavMeshAgentをアタッチし、青いオブジェクトを目的地として設定しています。

    [Unity6] Nav Mash Agentのプロパティすべて解説

    また、AgentのスクリプトはAuto Repathの例以外は以下のコードを使っています。

    using UnityEngine;
    using UnityEngine.AI;
    
    public class EnemyAgent : MonoBehaviour
    {
        private NavMeshAgent agent;
        public GameObject target;
    
        void Start()
        {
            agent = GetComponent<NavMeshAgent>();
        }
    
        void Update()
        {
            agent.destination = target.transform.position;
        }
    }
     
    

    ここから、プロパティの解説です。

    Agent Type

    使うAgentのタイプを選択できます。例えば、0.5までの高さの段差なら超えれるAgentと、1.0までの高さの段差を超えられるAgentを作成した場合、このプロパティからどちらのAgentを使うか選択できます。

    例:Agentが超えれる段差の高さ(Step Height)を0.3(赤)と0.75(黒)に設定した場合

    [Unity6] Nav Mash Agentのプロパティすべて解説

    0.75に設定したAgentは段差を超えれていますが、0.3に設定したAgentは段差を超えれていなません。

    Base Offset

    Agentの垂直方向の位置を調整できます。キャラクターのモデルの足元を地面に合わせるときなどに使います。

    例:Base Offsetを0(赤)と1(黒)に設定した場合

    [Unity6] Nav Mash Agentのプロパティすべて解説
    Speed

    Agentの最大移動速度を設定できます。

    例:Speedを7(赤)と3.5(黒)に設定した場合

    [Unity6] Nav Mash Agentのプロパティすべて解説
    Angular Speed

    Agentの回転の最大速度を設定できます。

    例:Angular Speedを240(赤)と120(黒)に設定した場合
    ※違いを分かりやすくするため、ここからはAgentのSpeedはどちらも7に設定されています。

    [Unity6] Nav Mash Agentのプロパティすべて解説
    Acceleration

    Agentの加速度を設定できます。

    例:Accelerationを16(赤)と8(黒)に設定した場合

    [Unity6] Nav Mash Agentのプロパティすべて解説
    Stopping Distance

    Agentが目的地に近づいたときに停止する距離を設定できます。

    例:Stopping Distanceを5(赤)と0(黒)に設定した場合

    [Unity6] Nav Mash Agentのプロパティすべて解説
    Auto Braking

    目的地到着時にAgentの速度を減速するかどうか設定できます。

    例:Auto Brakingを無効(赤)と有効(黒)に設定した場合

    [Unity6] Nav Mash Agentのプロパティすべて解説
    Obstacle Avoidanceについて

    Obstacle Avoidance関連のプロパティ(Radius, Height, Quality, Priority)を設定する際は、NavMesh Surfaceコンポーネントの設定も変更する必要があります。
    例えば、Radiusが1のAgentを新たに作成したい場合は、以下の手順でNavMesh SurfaceをBakeし直す必要があります。
    1. NavMesh SurfaceコンポーネントのAgent Typeから「Open Agent Settings...」を選択します。
    2. Agent Typesウィンドウで新しいAgent Typeを追加し、Radiusを1に設定します。
    3. NavMesh SurfaceコンポーネントのAgent Typeに、先ほど追加したAgent Typeを選択します。
    4. 「Bake」ボタンをクリックして、NavMeshを再生成します。

    Radius

    Agentの半径を設定できます。他のAgentとの衝突にも影響します。

    例:Radiusを1(赤)と0.5(黒)に設定した場合
    ※違いを分かりやすくするため、ここからはAgentのSpeedはどちらも7、Accelerationは32に設定されています。

    [Unity6] Nav Mash Agentのプロパティすべて解説

    1を設定されたAgentは、細い道を通れず遠回りしていることが確認できます。

    Height

    Agentの高さを設定できます。頭上の障害物の下を通り抜けれるかどうかに影響します。

    例:Heightを5(赤)と2(黒)に設定した場合

    [Unity6] Nav Mash Agentのプロパティすべて解説

    5を設定されたAgentは、頭上に障害物があるため遠回りしていることが確認できます。

    Quality

    Agentの障害物回避の品質を設定できます。None同士のAgentは衝突しません。

    例:QualityをどちらもNoneに設定した場合

    [Unity6] Nav Mash Agentのプロパティすべて解説
    Priority

    Agentの移動する際の優先度を設定できます。0〜99の値で設定し、小さい数字ほど優先度が高くなります

    例:Priorityを0(赤)と50(黒)に設定した場合

    [Unity6] Nav Mash Agentのプロパティすべて解説

    0を設定されたAgentは、道を譲られているのが確認できます。

    Auto Traverse Off Mesh Link

    オフメッシュリンクを自動で越えるかどうかを設定できます。例えば、地続きでない場所への移動をする場合は有効にします。

    Auto Traverse Off Mesh Linkを使うために、まず適当な感覚で床となるオブジェクトを複数設置し、NavMesh SurfaceでGenerate Linksにチェックを入れてます。
    次にOpeent Settn Agings...から使うAgentのTypeを選択しJump Distanceの値を変更してからBakeします。

    [Unity6] Nav Mash Agentのプロパティすべて解説 [Unity6] Nav Mash Agentのプロパティすべて解説

    下の画像のようにBake出来ていたら成功です。

    [Unity6] Nav Mash Agentのプロパティすべて解説

    例:Auto Traverse Off Mesh Linkを無効(赤)と有効(黒)に設定した場合

    [Unity6] Nav Mash Agentのプロパティすべて解説
    Auto Repath

    Agentがパスの更新を自動で試みるかどうかを設定できます。例えば、移動する障害物などがある環境では有効にします。

    Auto Repathを使うために、まず床となるオブジェクトを設置し、Cubeで目的地までの道を遮ります。 追加したCubeにAdd ComponentからNav Mesh Obstacleをアタッチし、Carveにチェックを入れ、その後NavMesh SurfaceでBakeします。

    [Unity6] Nav Mash Agentのプロパティすべて解説

    下の画像のようにBake出来ていたら成功です。

    [Unity6] Nav Mash Agentのプロパティすべて解説

    例:Auto Repathを無効(赤)と有効(黒)に設定した場合

    [Unity6] Nav Mash Agentのプロパティすべて解説

    Auto Repathが有効になっているAgentのみ、Cubeが動いた後に目的地までのパスが更新されているのが確認できます。

    ※ここでは、Agentのコードは以下のものを使っています。agent.destination = target.transform.position;を Update()内に書くと、AgentはAuto Repathが無効になっていても障害物が動いた後に目的地まで向かってしまいます。

    using UnityEngine;
    using UnityEngine.AI;
    
    public class EnemyAgent : MonoBehaviour
    {
        private NavMeshAgent agent;
        public GameObject target;
    
        void Start()
        {
            agent = GetComponent<NavMeshAgent>();
            agent.destination = target.transform.position;
        }
    }
     
    
    Area Mask

    Agentが移動できるナビゲーションエリアを設定できます。

    Area Maskを使うために、NavMesh SurfaceのDefault AreaがWalkableになっているを確認してからBakeします。

    [Unity6] Nav Mash Agentのプロパティすべて解説

    例:Area MaskをJump(赤)とEverything(黒)に設定した場合

    [Unity6] Nav Mash Agentのプロパティすべて解説

    Jump用ののAreaをBakeしていないので、
    Failed to create agent because it is not close enough to the NavMesh
    という警告と
    "SetDestination" can only be called on an active agent that has been placed on a NavMesh. UnityEngine.AI.NavMeshAgent:set_destination (UnityEngine.Vector3)
    というエラーが表示されます。