ナビメッシュ

敵キャラクターや NPC が移動可能な領域を、内部的にメッシュとして保持するデータオブジェsクト。シーン内のジオメトリを歩行可能サーフェスや障害物として設定し、ベイクすることで作成する。

公式サイト:

ナビメッシュの作成 | Unity マニュアル [公式]

 概要

参考:

Unity のナビゲーションシステム | Unity マニュアル [公式]

ナビゲーションシステムの内部的なしくみ | Unity マニュアル [公式]

使い方

  1. ベイク対象のオブジェクトを Navigation Static に設定する。
  2. メニューから「Window > AI > Navigation」を選択して、Navigation ウィンドウを開く。
  3. 「Bake」タブで「Bake」ボタンをクリックしてベイクを実行する。
  4. シーンファイル (.unity ファイル) のあるディレクトリにシーンの名前でディレクトリが作成され、NavMesh ファイル (NavMesh.asset) が配置される。

参考:

NavMesh を改めておさらい – Qiita

敵キャラを Unity のナビゲーション機能を使って移動させる | かめくめ

敵キャラを NavMesh でかしこくかっこよく動かしてみよう | k1t

近づいたら追いかけてくる巡回ユニティちゃん | イシゲーの Unity 保管庫

導入

参考:

ナビゲーションシステムを使用して目的地まで移動しよう! | XR-Hub

サクッと NavMesh を実装する手順 | TECH Projin

NavMeshを使った移動 | yttm-work

NavMesh Agent でよい感じにキャラクターを歩かせる | tanaka’s Programming Memo

NavMesh を学ぶ 焼けた編 | 陰干し中のゲーム開発メモ

NavMesh を学ぶ 障害物編 | 陰干し中のゲーム開発メモ

Terrain で作った世界に NavMesh を設定してうろつく | ぎーくなぁど

NavMesh を今さら勉強したお話 #1 | 個人的勉強メモ置き場

NavMesh を今さら勉強したお話 #2 | 個人的勉強メモ置き場

オフメッシュリンク (Off Mesh Link)

  • Drop-Down リンク段差を飛び降りる
  • Jump-Across リンク足場のギャップを飛び越える

参考:

AI が賢く移動できるための機能、NavMesh とオフメッシュリンクを設定する – Qiita

Unity のナビゲーション機能で Off Mesh Link を使って移動 | かめくめ

NavMesh Agent をジャンプさせる方法 | くろくまそふと

Off Mesh Link の作成 | Unity マニュアル [公式]

Off Mesh Link | Unity マニュアル [公式]

オフメッシュリンクの自動生成 | Unity マニュアル [公式]

キャラクターを歩行させる

参考:

NavMesh の AI 経路探索と Animator のアニメーションを連動させる | テラシュールブログ

NavMesh Agent でよい感じにキャラクターを歩かせる | tanaka’s Programming Memo

キャラクターを配置する

参考:

敵キャラの出現を自動化する | ソフトライム

ナビメッシュ上に敵を出現させる | 初心者からわかりやすく

最近接点を取得する (SamplePosition)

コード:

Get Random Position on NavMesh (IJEMIN) – GitHub Gist

参考:

AI.NavMesh.SamplePosition | Unity スクリプトリファレンス [公式]

NavMesh.SamplePosition – Unity Forum

動く障害物を回避する (NavMesh Obstacle)

参考:

NavMesh Obstacle – ナビメッシュ障害物の使い方 | Uinty 使い方ガイド

動く障害物に NavMesh を適用させる方法 | とんプログラミング

障害物編 | 徳島ゲーム開発ごっこ

Nav Mesh Agent が避ける障害物を動かす | しっぽを追いかけて

Nav Mesh Obstacle を避けて移動してくれない場合 | いんでぃーづ

NavMesh Obstacle の作成 | Unity マニュアル [公式]

NavMesh Obstacle | Unity マニュアル [公式]

AI.NavMeshObstacle | Unity スクリプトリファレンス [公式]

NavMesh Agent not avoiding obstacles correctly – Unity Forum

一時停止させる (Stop)

参考:

How can I pause an NavMesh Agent moving in between waypoints and then continue? – Stack Overflow

スクリプトからベイクする

参考:

AI.NavMeshBuilder.BuildNavMesh | Unity スクリプトリファレンス [公式]

NavMesh bake multiple maps in the same scene – Stack Overflow

NavMesh を描画する

参考:

NavMesh を描画 – Qiita

AI.NavMeshTriangulation | Unity スクリプトリファレンス [公式]

NavMesh クラス

参考:

AI.NavMesh | Unity スクリプトリファレンス [公式]

AllAreas

参考:

AI.NavMesh.AllAreas | Unity スクリプトリファレンス [公式]

NavMeshData

参考:

AI.NavMeshData | Unity スクリプトリファレンス [公式]

FindClosestEdge

参考:

AI.NavMesh.FindClosestEdge | Unity スクリプトリファレンス [公式]

アニメーションと同期させる

参考:

NavMesh で取得した経路を ApplyRootMotion で移動させる手っ取り早い方法 | テラシュールブログ

ナビメッシュエージェントで足滑りのない移動を実装する | Yucchiy’s Note

NavMesh Agent の挙動を手動でアップデートする | e.blog

アニメーションとナビゲーションの利用 | Unity マニュアル [公式]

NavMesh Agent を他のコンポーネントと共に使う | Unity マニュアル [公式]

物理演算/剛体と併用する

参考:

NavMesh と Rigidbody を連携して動かす | テラシュールブログ

NavMesh Agent を他のコンポーネントと共に使う | Unity マニュアル [公式]

プレイヤーの操作に Nav Mesh を使う

参考:

NavMesh Third Person?? – Unity Forum

ポータル/入口/出口間を移動する

参考:

NavMesh で離れた空間にテレポートする | テラシュールブログ

経路を巡回させる (Waypoint)

参考:

自動車の再現 (NavMesh + Waypoint) | Tramworks

エージェントに設定した地点を巡回させる | Unity マニュアル [公式]

Simple Waypoint System | Niklas Bergstrand

Pathfinding to waypoints using NavMesh – Stack Overflow

群衆を動かす

参考:

NavMesh Agents to avoid clumping / merging / jostling into one another – Unity Forum

Nav Mesh manager performance issue – Unity Forum

Limitations using navigation for large crowds (over hundreds of agents) – Unity Forum

Agent getting stuck in another Agent when walking in corners – What is the RIGHT solution? – Unity Forum

Playmaker で使う

参考:

AI を使って自動で移動する 3D モデルを作る | STYLY

静的なオブジェクトをシーンビューで確認する

参考:

How to find GameObject(s) with “Navigation Static” or “Batching Static” ? – Unity Forum

エージェントが経路探索に失敗する/動かない

参考:

NavMesh Agent not working anymore – Unity Answers

地面に埋まって動かない

参考:

NavMesh Agent is falling close to the floor / surface is there a way to keep the agent height ? – Unity Forum

想定した経路と異なる動きをする

参考:

NavMesh Agents are not moving along the mesh – Game Development Stack Exchange

壁が検出できない

参考:

Why does my navmesh not stop at this wall? – Unity Answers

Enemy AI keeps walking through walls – Unity Answers

Enemy AI walking through walls – Stack Overflow

ナビメッシュから外れないようにしたい

参考:

NavMesh Agent not working – Unity Forum

only be called on an active agent エラー

現象:

ナビメッシュ上に配置されたアクティブエージェントでのみ該当するメソッドの呼び出しができる旨のエラーが発生する。

"XXX" can only be called on an active agent that has been places on NavMesh.

原因:

  • エージェントがナビメッシュ上に配置されていない。
  • NavMesh Agent コンポーネントが正常に初期化されていない。

参考:

Unity で *** can only be called on an active agent that has been placed on a NavMesh. とか言われる時の対処法 – Qiita

NavMesh を用いて自動追尾する敵を作りたい – teratail

SetDestination can only be called on an active agent that is on a NavMesh – Unity Forum

イシュー

参考:

Memory Leak in NavmeshAgent.SetDestination method when multiple agents are in the same position | Unity Issue Tracker

Memory Leak in NavmeshAgent.SetDestination if multiple agents in the same position – Unity Forum

Unity Learn

From Waypoints to NavMesh | Unity Learn [Official]

Tips

NavMesh Agent を他のコンポーネントと共に使う | Unity マニュアル [公式]

チュートリアル

Basics (Brackeys)

Making it Dynamic (Brackeys)

Animated Character (Brackeys)

NavMesh Baking (Official)

How to Use NavMesh Pathfinding!

Basics (Table Flip Games)

Obstacles (Table Flip Games)

Waypoints on a NavMesh

NavMeshAgent Keyboard Movement

How Many AI Agents Can Unity Handle?

Destroying and Avoiding Obstructions with Nav Mesh Agents

Custom Nav Mesh

リポジトリ:

jadvrodrigues/CustomNavMesh: Alternative to Unity’s NavMesh System Where the Agents Avoid Each Other – GitHub

フォーラム:

CustomNavMesh – Unity’s NavMesh But the Agents Avoid the Other Non-Moving Agents | Unity Forum

記事をシェアする:
タグ:

コメントを残す

メールアドレスが公開されることはありません。

Protected by reCAPTCHA