這個報錯表示的意思是:NavMeshAgent所在節(jié)點未放置在尋路網格上
從最基本的理解上,就是說你的角色,或者某個 agent 沒有在導航的地形上,

最關鍵的是:由此引發(fā)的報錯:

"SetDestination" can only be called on an active agent that has been placed on a NavMesh.
導致角色無法移動。
我找了很久問題,百度了四五個小時,網上說的很多解決方法,包括不限于:
由于角色是 由 Instantiate 生成的,所以一開始不在導航網格上,所以需要使用 類似于NavMeshAgent.Warp(transform) 來重新設置位置而不是 transform.position 來初始化位置
不同角色重疊,障礙物檢測異常,只要把 Radius 改成0,或者關閉 Obstacle Avoidance,人物就可以重疊了且移動之類的
或者是反復激活 角色身上的 Nav Mesh Agent 組件的激活狀態(tài) active
還有些人是基本問題:
1>. 未設置物體的Navgation static標簽。
2.> 沒有烘焙尋路網格。
3.> 尋路物體本身沒有設置導航組件。
這些和我都沒有問題,直到我第二天在bing上搜一些國外開發(fā)者針對這個問題的答案,
我復制了一些機翻的方法:
1:將地形放到原點0,0,0
2:將腳本放到最上面:一個是將using unityEngineAI放道最上面,一個是將C#腳本放到 NavMeshAgent腳本上試試
3:先激活代理角色身上的 NavMeshAgent腳本,再生成網絡本身(這個有待商榷)
4:看下報錯到底是距離太遠還是距離太近,抬高地形或降低地形
5:代理的比例問題,還是要看一下,場景比例太大了,需要適當調整旋轉半徑,高度的值
6:有的說代理上的 collider 會有影響 ,試著取消勾選,或者轉移到別的地方
說實話全部都沒有解決我的,我就是看教程做了個簡單導航,

直到我看到一個國外大哥說了一句話:
別忘了檢查Agent Type,因為我的Agent中有“New Agent”,將其更改為Humanoid對我有幫助。


就因為我試了一下增加了一個Agent的新代理,且角色用的就是這個新代理,我自己都忘了當時新增了一個代理了,只是看書上說有這么個功能罷了
解決方法:
把代理名字改回 Humanoid
雖然這樣會導致只能選擇一個代理模式,但是沒報錯了文章來源:http://www.zghlxwxcb.cn/news/detail-537329.html
我剛學這個,不知道為什么新增不行,那如果我要新增不同的代理模式怎么辦。如果有人知道這種情況,麻煩留言一下文章來源地址http://www.zghlxwxcb.cn/news/detail-537329.html
到了這里,關于Unity “Failed to create agent because it is not close enough to the NavMesh“警告 并由此引發(fā)的問題的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!