unity 敌人自动攻击和寻路_【A*Pathfinding】超级简单的Unity2D寻路
哈嘍~我是yumir。
寫過俯視角射擊和“元?dú)怛T士”地圖生成之后,不做個敵人AI總覺得差點什么,所以又研究了一下Unity的2D尋路。
這次我用的是A*Pathfinding的免費(fèi)版。
獲取方法:
在官網(wǎng)(A* Pathfinding Project)點擊Download選項,在跳轉(zhuǎn)到的頁面上選擇下載”Free“版本,將下載下來的文件導(dǎo)入到unity中,就可以開始我們的大事業(yè)了。
一、設(shè)置尋路網(wǎng)格
雖然也可以腳本控制,但是建議先簡單搭建一個場景熟悉下插件,而且能不寫代碼就完成功能我覺得香得很~
在搭建好的場景中新建一個空物體,點擊”AddComponent“搜索”Pathfinder“添加該組件。添加組件之后面板顯示如下,點擊圖中框選按鈕添加Grid Graph(Graphs>Grid Graph)。
由于我做的是2D尋路,所以將”2D“和”Use 2D Physic“勾選,使用2D模式,再在第三個紅框的位置選擇一個Layer,這個Layer表示”不能行走“的范圍,也就是障礙物,做這一步的同時需要將場景中的障礙物的Layer都設(shè)置為對應(yīng)的Layer。
”Width“和”Depth“分別表示網(wǎng)格的長高,單位是”nodes“也就是有幾個格子。下面的”Node size“ 表示格子的大小也可以理解為網(wǎng)格的精度,這些都根據(jù)需求調(diào)整。點擊下方的Scan按鈕,就會掃描生成尋路網(wǎng)格,紅色方框的部分代表不可行走,藍(lán)色部分則反之。
那么動態(tài)生成的地圖應(yīng)該怎么烘焙網(wǎng)格呢,設(shè)置一張對應(yīng)大小的網(wǎng)格然后在地圖生成結(jié)束的時候調(diào)用插件提供的方法即可:
GetComponent<AstarPath>().Scan();二、讓敵人找到玩家
首先我們需要一個迷人的反派角色,我把玩家的貼圖疊了一層紅色畫了個紅眼睛用來充當(dāng),效果還不錯。
新建一個空物體作為反派角色的父物體,在該物體上添加”AI Path“組件,而后系統(tǒng)會自動添加另一個組件”Seeker“,這是因為AI Path需要利用Seeker來尋路,放著別動就行,除非你打算自定義一個AI Path。
再添加一個”AI Destination Setter“組件,該組件負(fù)責(zé)更新目標(biāo)位置。
AI Path主要修改以下內(nèi)容:Orientation、Enable Rotation、Gravity。
再將玩家角色拖拽到AI Destination Setter的Target上,點擊運(yùn)行就可以看到尋路的效果。
三、簡單AI實現(xiàn)
迷人的反派角色當(dāng)然不能只是跟屁蟲,這里給他寫一個簡單的狀態(tài)機(jī),分別又待機(jī)、追逐、攻擊三個狀態(tài):
enum在Update中根據(jù)當(dāng)前的狀態(tài)類型分別調(diào)用對應(yīng)的方法:
switch (enemyState){case EnemyState.Idle:Idle();break;case EnemyState.Tracking:Tracking();break;case EnemyState.Attack:Attack();break;default:break;}AI Path沒有提供停止尋路的接口,但是沒關(guān)系,將速度設(shè)置為零就可以讓他停下了。在各自的狀態(tài)方法中改變當(dāng)前的速度、狀態(tài)類型、和動畫:
AIPath.maxSpeed = speed; enemyState = EnemyState.Tracking; enemyModel.GetComponent<Animator>().SetBool("walk", true);加上和玩家相互攻擊的邏輯就是一個小游戲啦。
鏈接:https://pan.baidu.com/s/1khG-XNnPQIoXBmIj5VejEQ
提取碼:kkm8
~~~分割線~~~
歡迎加入游戲開發(fā)群歡樂攪基:610475807
對游戲開發(fā)感興趣的童鞋可戳這里進(jìn)一步了解:http://www.levelpp.com/
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的unity 敌人自动攻击和寻路_【A*Pathfinding】超级简单的Unity2D寻路的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 简单网页_Python爬虫
- 下一篇: 野山葡萄酒的功效与作用、禁忌和食用方法