[Unity6] NavMeshAgentの速度や加速度をスクリプトで制御する方法 (Speed, AngularSpeed, Acceleration...)

(2025/02/19)
[Unity6] NavMeshAgentの速度や加速度をスクリプトで制御する方法 (Speed, AngularSpeed, Acceleration...)

開発環境
  • Unityのバージョン : 6000.0.36f1


  • NavMeshAgentを使ってキャラクターを移動させる際、速度や加速度などを状況に応じて変更したい場合があると思います。この記事では、NavMeshAgentの主要なプロパティ(Speed, AngularSpeed, Acceleration, StoppingDistance, AutoBraking)をスクリプトから変更する方法を紹介します。

    NavMeshAgentのプロパティをスクリプトから変更するコード

    using UnityEngine;
    using UnityEngine.AI;
    
    public class EnemyAgent : MonoBehaviour
    {
        public GameObject target;
        public float newSpeed = 7f;
        public float newAngularSpeed = 240f;
        public float newAcceleration = 16f;
        public float stoppingDistance = 5f;
        public bool autoBraking = false;
        private NavMeshAgent agent;
    
        void Start()
        {
            agent = GetComponent<NavMeshAgent>();
            agent.destination = target.transform.position;
            agent.speed = newSpeed;
            agent.angularSpeed = newAngularSpeed;
            agent.acceleration = newAcceleration;
            agent.stoppingDistance = stoppingDistance;
            agent.autoBraking = autoBraking;
        }
    
    }
     
    

    上記のコードを、AgentにアタッチしInspectorからTargetに目標となるゲームオブジェクトを設定してシーンを実行すると NavMeshAgentのプロパティが変更されます。