LIGHT11LIGHT11読者になるLIGHT112019-12-10【Unity】NavMeshをランタイムで構築できるNavMeshComponentsUnityUnityでNavMeshをランタイムで構築できるNavMeshComponentsを使う方法をまとめました。参考Unity2019.2.6インストールNavMeshComponentsはUnityに含まれていないので、以下のgithubからインストールする必要があります。github.comダウンロードした後、NavMeshComponentsフォルダを自身のプロジェクトのAssetsフォルダ配下にコピーすればOKです。Meshをビルドしてみます。以下のように適当にモデルを組み合わせたシーンを用意しておきます。Staticは外しておいても問題ないです。次にシーン上に空のGameObjectを作り、NavMeshSurfaceコンポーネントをアタッチします。この状態でBakeボタンを押下すると、NavMeshが構築されます。Meshをビルドするには、NavMeshSurface.BuildNavMesh()を呼びます。Meshをビルドしています。Surfaceの以下の項目を設定します。各項目の説明は以下の通りです。コライダーの形状を元にビルドメッシュごとにビルド設定する前節ではビルド対象を絞り込みました。次にこのビルド対象について、例えば「このGameObjectだけはビルド対象から除外したい」といった場合の設定方法を見ていきます。Modifierコンポーネントをアタッチします。Buildにチェックを入れるとこのGameObjectはビルド時に除外されます。Areaにチェックを入れるとNavigationのArea設定を上書きできます。Agentsは、このModfierを影響させるエージェントタイプを指定します。Typeの上書きはGameObjectではなく立方体の領域で指定することもできます。Volumesコンポーネントを適当なGameObjectにアタッチします。Walkableに変更すると以下のようになります。Meshを繋ぐようなNavMeshを作成できます。Linkコンポーネントをアタッチします。Meshの幅を指定します。Meshを繋ぐことができます。障害物の設定などは組み込みのNavigationの機能を使うさてここまででNavMeshComponentsの説明は一通り終わりました。これらの機能はあくまで既存のNavigation機能の拡張という位置付けです。そのため、障害物の設定などは既存のNavigationを機能を使うことで実現します。この辺りは以下の記事で説明しているので、必要に応じて参照してください。1はてなブログをはじめよう!halya_11さんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。