概要
UnityでNavMeshを使っていて以下のようなエラーが出ました。
Failed to create agent because it is not close enough to the NavMesh
この解決策が検索してもなかなか見つからなかったため、記録しておきます。
特に Agent Type を Humanoid 以外にしている場合はこの記事と同じ原因である可能性が高いです。
環境
Unity 2019.3.0a5
Windows10
解決策
このエラーを直訳すると、「エージェントがナビメッシュに十分に近くないため生成に失敗している」ですが、この原因として以下の2つが考えられます。
- エラー文通り、エージェントとナビメッシュが離れている
- エージェントのTypeに合ったナビメッシュが生成されていない
それぞれについて解決策を説明します。
1. エラー文通り、エージェントとナビメッシュが離れている
この場合、NavMeshAgentのコンポーネントのBase Offsetの値を変えることで直ることがあります。
Scene上にNavMeshAgentの円柱が出ているので高さが合うように調整してください。
2. エージェントのTypeに合ったナビメッシュが生成されていない
今回のメインはこちらです。
NavMeshはAgent Type を複数作ることが可能です。これはキャラクターごとに異なる高さや太さを設定するための機能です。しかし、現状Unityでは、NavigationウィンドウでBakeした場合、デフォルトのHumanoidにしか適用されません。
つまり、各Agent TypeごとにナビメッシュをBakeする必要があります。
これをするには、ステージとなるオブジェクトに、Nav Mesh Surfaceコンポーネントを追加します。そしてAgent Typeの値を指定してBakeすることで、そのAgent Typeのエージェントが動くようになります。