【Unity】NavMeshの作成手順(Unity2022:新バージョン)
NavMesh(ナビゲーションメッシュ)は、3Dゲームでキャラクターが自動的に移動できるエリアを定義する技術です。ゲーム開発では、キャラクターが障害物を避けて目標地点に到達するような経路探索が必要です。NavMeshを使うと、ゲームの地形をもとに移動可能な範囲(メッシュ)を自動的に生成し、キャラクターが効率的に移動できます。Unityでは、NavMeshコンポーネントを追加して、簡単に経路探索を設定できるため、初心者でも使いやすい機能です。
新しいバージョンになり、一部、操作が異なります
次を参考に進めていきましょう
パッケージマネージャからAI Navigationのインポート
Windowメニューからビューを開いてインポートします
障害物の作成
テスト用に高さ1くらいのCubeを作成して、プレイヤーと敵の間に置いておきましょう
追いかける敵を作成します
想定として敵に見立てたシリンダーを1つ置いてみましょう
敵のゲームオブジェクトに追いかける機能のコンポーネントを追加します
NavMeshAgentコンポーネントを追加します
追いかけるスクリプトの作成
NavMeshAgentを利用するために、移動用にスクリプトを1つ作成し、敵(シリンダー)にアタッチします
NavmeshAgentのdestination(目的地)プロパティにプレイヤーを代入することで追いかける機能が実行されます
using UnityEngine;
using UnityEngine.AI;
[RequireComponent(typeof(NavMeshAgent))]
public class Enemy : MonoBehaviour
{
[SerializeField]
Transform playerTransform;
NavMeshAgent agent;
void Start()
{
agent = GetComponent<NavMeshAgent>();
}
void Update()
{
agent.destination = playerTransform.position;
}
}
アタッチしたら、インスペクターのplayerTransformフィールドに、追いかけられるプレイヤーをドラッグ&ドロップします
Updateに記述しているので、毎フレームごとにプレイヤーが移動すると、そこに向かって追いかけてくることになります
敵の移動可能エリアの指定
シーンにNavMesh Surfaceゲームオブジェクトを作成と移動エリアを作成
ヒエラルキーで右クリック、AIメニューから選択します
NavMeshSurfaceコンポーネントがアタッチされたNavMesh Surfaceゲームオブジェクトが作成されます
(ゲームオブジェクト名とコンポーネント名が同じですが、機能が違うので大丈夫です)
敵の移動エリアの作成
作成後、NavMeshSurfaceコンポーネントで、移動可能エリアのベイクを実行します
上記手順を進めた時の動画
実行結果
敵が追っかけてくるパラメータ(情報)のカスタム設定
スピードがデフォルトで3.5m/sになっていますので、ゆっくり迫ってきて欲しい時は調整しましょう
NavMesh Surfaceの情報を変更するには
エージェントの移動制限のパラメータは、インスペクターから変更できません
Windowメニューから設定変更のページを開きます
ディスカッション
コメント一覧
まだ、コメントがありません