Table of Contents

動的ナビゲーション

初級 レベル デザイナー プログラマー

動的ナビゲーションを有効にした場合、ナビゲーション コンポーネントを含むエンティティはナビゲーション メッシュ アセットを必要としません。代わりに、エンティティはナビゲーション メッシュを動的に生成します。

Note

エンティティを動的にナビゲートしたいシーンには、ナビゲーション境界ボックスを必ず設定してください。

動的ナビゲーションを有効にする

動的ナビゲーションは、グローバル ゲーム設定アセットで有効および無効にできます。

  1. 動的にナビゲートするエンティティの、ナビゲーション コンポーネントのプロパティの[Navigation Mesh]で、ナビゲーション メッシュが選択されていないことを確認します。

    No navigation mesh selected

    ナビゲーション コンポーネントの詳細については、「ナビゲーション コンポーネント」を参照してください。

  2. [Solution explorer](既定では左下のペイン) で、[Assets]フォルダーを選択します。

    Select Assets folder asset

  3. [Asset view](既定では下部のペイン) で、[Game Settings]アセットを選択します。

    Select Game Settings asset

  4. [Property grid](既定では右側のペイン) で、[Navigation Settings]の[Dynamic navigation mesh]を展開します。

    Game settings

  5. [Enabled]チェックボックスをオンにします。

    Enable dynamic navigation checkbox

動的ナビゲーション メッシュのプロパティ

プロパティ 説明
Enabled ナビゲーション メッシュが割り当てられていないナビゲーション コンポーネントで動的ナビゲーションを有効にします。
Included collision groups 動的に生成されるナビゲーション メッシュが使用する衝突グループです。既定では、メッシュはすべての衝突グループを使用します。
Build settings 動的に生成されるナビゲーション メッシュの高度な設定です。

動的ナビゲーションをスクリプトから有効および無効にする

コード例:

// 動的ナビゲーション メッシュ システムを検索して有効にする
dynamicNavigationMeshSystem = Game.GameSystems.OfType<DynamicNavigationMeshSystem>().FirstOrDefault();
dynamicNavigationMeshSystem.Enabled = true;

// 以下の場合に、動的ナビゲーション メッシュ システムが自動的に再ビルドされなくなる。
//  - シーンのロード/アンロード
//  - 静的コライダー コンポーネントの追加/削除
//  - ナビゲーション メッシュ境界ボックスの追加/削除
dynamicNavigationMeshSystem.AutomaticRebuild = false;

// ...

if (/* ナビゲーション メッシュの更新が必要になるすべての条件 (ドアを開く/閉じる、など) */)
{
	// ナビゲーション メッシュの非同期再ビルドを開始する
	var rebuildTask = dynamicNavigationMeshSystem.Rebuild();
	rebuildTask.ContinueWith((x) =>
	{
		if (x.Result.Success)
		{
			// ナビゲーション メッシュが正常に再ビルドされた
		}
	});
}

関連項目