しっぽを追いかけて

ぐるぐるしながら考えています

Unity と猫の話題が中心   掲載内容は個人の私見であり、所属組織の見解ではありません

Unity で Tilemap に NavMesh をベイクしてみる

※ これは 2021/02/26 時点の Unity 2020.2.6f1 の情報です

最新版では動作が異なる可能性がありますのでご注意ください

前回は Tilemap で背景を作れるようになったので、さっそくねこキャラを動かしてみた

箱を避けるようにするには?

当然ながら木箱のマップチップを置いても無視されて突き抜けてしまう

これを回り込むようにするために NavMesh が必要らしいので、Tilemap に適用してみたい

まずは下記 NavMeshComponents の 2D 対応ブランチをダウンロード

Unity-Technologies / NavMeshComponents

zip を解凍した中身の Assets/GizmosAssets/NavMeshComponentsディレクトリごとプロジェクトにコピー

NavMeshComponents

次に Tilemap に使っている SpriteSprite Editor で開き Custom Physics Shape のメニューを選択

Custom Physics Shape

左端2枚の各チップについて、最初にマップチップを選択、次にマウスドラッグで「通れる範囲」を指定する

通れる部分を範囲指定

通れない範囲ではなく通れる範囲を指定する必要がある

忘れずに右上の Apply ボタンを押下して変更を適用

このままだとほかのマップチップも通れる扱いになるっぽいので、全く通れない残りのマップチップは Colider TypeNone にしておく

通れないマップチップは Colider Type を None

Unity Editor メニューの [Window] - [AI] - [Navigation] を選択

当たり判定を細かめに判定するため Agent タブを選択して、Radius を 0.05 という小さめの値にしておく

Agent の Radius

次に Hierarchy 上の Tilemap を選択、Tilemap Colider 2DNav Mesh Source Tag 2Dコンポーネントを追加

Tilemap に NavMesh 生成用コンポーネント追加

最後に 新しい GameObject を NavMeshBuilder という名前で追加し、Nav Mesh Builder 2Dコンポーネントを追加し、Bake ボタン押下

NavMesh のベイク

これで Scene タブと Navigation タブを開いてみると・・・

生成された NavMesh

きれいに Tilemap にしたがって NavMesh が生成されたっぽい