
UnityのNavMeshAgentはキャラクターやオブジェクトをナビゲーションメッシュ(NavMesh)上で移動させるための非常に便利なツールです。
ここでは、NavMeshAgentの基本的な導入方法と使い方について説明します。
目次
1.プロジェクトの準備
まず、Unityの新しいプロジェクトを作成します。3Dプロジェクトを選択して、シーンにいくつかのオブジェクト(地形、障害物、プレイヤーなど)を追加しておきます。
2.地形の作成とNavMeshのベイク
NavMeshは、オブジェクトが移動できる領域を定義するために使用されます。
地形や床となるオブジェクトをまず配置し、次にその上をオブジェクトが動けるようにNavMeshをベイクします。
1.地形や床オブジェクトを選択
地形や床になるオブジェクトを選択し、インスペクタの名称横の「Static」のプルダウンメニューをクリックし「Navigation Static」を選択します。
2.NavMeshのベイク
次に、メニューから「Window」→「AI」→「Navigation」を開きます。
「Bake」タブに移動し、タブ名下の「Bake」ボタンをクリックし、タブ内下の「Bake」をクリックしてNavMeshを生成します。
これで、オブジェクトが移動可能なエリアが作成されます。
3.NavMeshAgentの追加
次に、キャラクターやオブジェクトにNavMeshAgentを追加します。
1.オブジェクトの選択
移動させたいオブジェクト(例えばCubeなど、仮に名称を「People」とします)を選択し、インスペクタの「Add Component」ボタンから「NavMeshAgent」を追加します。
2.NavMeshAgentの設定
NavMeshAgentのパラメータを調整します。
例えば、移動速度 (Speed) や回転速度 (Angular Speed)、停止距離 (Stopping Distance) を調整することで、エージェントの動きをカスタマイズできます。
4.スクリプトでエージェントを制御
NavMeshAgentを使って目的地に向かってオブジェクトを移動させるために、スクリプトを作成します。
以下のようなシンプルなスクリプトを作成し、オブジェクトに追加します。
1.スクリプト追加手順
プロジェクト内「+」→「C# Script」にてスクリプトを追加し先程と同じように名称を「People」にします。
先程の「NavMeshAgent」を追加したオブジェクト(名称:People)にアタッチします。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class People : MonoBehaviour
{
public Transform target; // 移動したい目的地のターゲット
private NavMeshAgent agent;
void Start()
{
agent = GetComponent<NavMeshAgent>(); // NavMeshAgentを取得
}
void Update()
{
agent.SetDestination(target.position); // ターゲットの位置に向かって移動
}
}
5.ターゲットを設定する
シーン内にターゲットとして移動先のオブジェクト(例えばCubeなど)を配置し、先程作成して「People」オブジェクトに追加したスクリプト内のtargetフィールドにドラッグ&ドロップします。
これにより、エージェントがそのターゲットに向かって移動するようになります。
6.実行と確認
シーンを再生して、NavMeshAgentが指定したターゲットに向かって移動するか確認します。
エージェントが地形に沿って滑らかに移動し、障害物を避ける動きをするはずです。
7.まとめ
NavMeshAgentを使うことで、キャラクターやオブジェクトの自動移動やナビゲーションを簡単に実現できます。NavMeshのベイクとNavMeshAgentの設定をしっかり行い、目的地までの移動をスムーズに行えるように調整しましょう。
【Unity】Unityで親オブジェクトにアクセスする方法 - Django Girls and Boys 備忘録
【Unity】Unityで背景を設定する方法 - Django Girls and Boys 備忘録
【Unity NavMesh】NavMeshObstacleを追加する方法 - Django Girls and Boys 備忘録
【Unity】NavMesh、NavMeshAgentの使用方法 - Django Girls and Boys 備忘録
【Unity】オブジェクトの影(シェイド)を消す方法 - Django Girls and Boys 備忘録
【Unity】オブジェクトの影をなくす方法 - Django Girls and Boys 備忘録