[Unity] 敵人,怪物如何自動找到你透過NavMesh 快速開發

如果要開發RPG或是FPS 類型遊戲,其中很多電腦敵人或是NPC同伴,那光是處理路徑計算,就叫人吐血了

還好Unity 有提供 NavMesh 的方法,只要告訴NPC 要去的 Vector3(座標),它就會乖乖去摟

那要按照以下步驟

1.在NPC身上加上 NavMesh  Component

2.需要告訴NPC 的 NavMesh  要往哪裡走,這時就需要寫一下Script

void Update() {
           
            if (!player.death/*判斷使用者還活者*/) {
                // ... 告訴NPC 目前要去的目標,那這裡是玩家的座標
                nav.SetDestination(player.position);
            }
            // Otherwise...
            else {
                // ... disable the nav mesh agent.
                nav.enabled = false;
            }
        }


3. 直接運行的話,會噴錯喔 XD 錯誤如下

SetDestination can only be called on an active agent that has been placed on a navmesh

4. 那是因為要使用 NavMesh 要先 Bake (就像是CS BOT 新地圖要讓BOT 研究一下路線阿),到 Window > Navigation > Bake 點擊下方的 Bake

5. Bake 完後地圖就會出現路線區域標示


這樣就大功告成啦

BTW
建議Bake時不要把主角放到場景上喔,因為這樣有時候主角會變成無敵的XD(collider 會失效)





留言

這個網誌中的熱門文章

angular 如何Http 如何設定 CORS (Cross-Origin Resource Sharing)

Google Map 單車路徑計算坡度和角度小工具

Google URL Shortener API 快速教學