Version: 2019.2
NavMesh Bake の詳細設定
NavMesh Obstacle の作成

NavMesh Agent の作成

NavMesh をベイクした後は、シーン内を動き回るキャラクターを作成します。手始めにシリンダーでプロトタイプのエージェントを作成し、動きを設定していきます。キャラクターは NavMeshAgent コンポーネントと簡単なスクリプトを使って実装することができます。

まずは、キャラクターを作成してみましょう:

  1. シリンダーを作成します: GameObject > 3D Object > Cylinder .
  2. デフォルトのシリンダーの寸法(高さ 2 、半径 0.5 )は、人型のエージェントに適しているので、そのまま使用することができます。
  3. NavMesh Agent コンポーネントを追加します: Component > Navigation > NavMesh Agent

これでコマンドを受信できるシンプルなエージェントのセットアップが完了しました。

エージェントを実際に動かすときには、キャラクターの大きさと速度を適切な値に設定しましょう。

NavMesh Agent コンポーネントは、経路探索とキャラクターの移動制御の両方を処理します。スクリプトで、ナビゲーションは目的地となる位置を設定するだけで簡単に行えます。エージェントは目的地へ行くためにできることすべてを駆使して対処します。

    // MoveTo.cs
    using UnityEngine;
    using UnityEngine.AI;
    
    public class MoveTo : MonoBehaviour {
       
       public Transform goal;
       
       void Start () {
          NavMeshAgent agent = GetComponent<NavMeshAgent>();
          agent.destination = goal.position; 
       }
    }

次に、指定した目的地をキャラクターに伝えるためのスクリプトと、目的地となる Sphere を作成します。

  1. 新規の C# スクリプトMoveTo.cs)を作成し、上記にあるスクリプトへと置き換えます。
  2. 先ほど作成したキャラクターに MoveTo スクリプトをアタッチします。
  3. エージェントの目的地となる、球体 を作成します。
  4. キャラクターから離れた位置の NavMesh の表面近くに球体を配置します。
  5. キャラクターを選択し、MoveTo.cs をアタッチして、Goal プロパティーに球体を割り当てます。
  6. 再生ボタンを押しましょう。エージェントが球体の位置へと移動していくはずです。

要するに、スクリプトで NavMesh Agent コンポーネントへの参照を取得し、エージェントに動きを設定するために、位置をその destination プロパティーに指定するだけです。ナビゲーションの使いかた ではエージェントを使った一般的なゲームシナリオの作り方の例を紹介します。

参考文献

NavMesh Bake の詳細設定
NavMesh Obstacle の作成