17_167~179EnemyBehavior
167?Makeing Enemies Move讓敵人移動
AI Pawn NavigationAI棋子導(dǎo)航
創(chuàng)建導(dǎo)航網(wǎng)格

放置與場景中,按P鍵可以顯示可以移動的區(qū)域

168?從mixamo上導(dǎo)入了Enemy的walk attack run的動畫
169?Blendspaces混合空間
Blending Between Different Animations不同動畫之間的混合
創(chuàng)建混合空間
Blend Space 1D

打開動畫藍(lán)圖,來到idle狀態(tài)中,刪除之前的動畫,拖入創(chuàng)建的混合空間

然后我們需要獲取Enemy的移動速度
來到事件圖表中,從目標(biāo)獲取character movement 并將其提升為變量

我們來到BlueprintThreadSafeUpdateAnimation 函數(shù)中,接著上次設(shè)置的內(nèi)容
創(chuàng)建一個(gè)Property Access,然后獲取到character movement中的velocity,并獲取其中的Vector Length XY,賦值給GroundSpeed

最后返回這里,將GroundSpeed,賦值給混合空間的參數(shù)

編譯之后,在游戲中就可以看到Enemy跑起來了
在Enemy藍(lán)圖中,設(shè)置如下
取消"使用控制器旋轉(zhuǎn)Yaw"

選中


或者在C++中設(shè)置
在Enemy的構(gòu)造函數(shù)中設(shè)置

最后調(diào)整一下walk的速度 和混合空間中的值,使其與動畫相符,不會滑步
170?Patrol Targets巡邏目標(biāo)
Adding patrol Targets for the Enemy為敵方增加巡邏目標(biāo)
高級的文章:https://zhuanlan.zhihu.com/p/390375061
創(chuàng)建新變量,用于存儲當(dāng)前目標(biāo)和巡邏目標(biāo)組


編譯代碼之后,回到enemy藍(lán)圖中,刪除之前的節(jié)點(diǎn)

然后在地圖上添加 Target Point
設(shè)置地圖上Enemy實(shí)例中的AI Navigation
運(yùn)行一下,Enemy就可以向Target移動過去了
171?Selecting partol Targets選擇部分目標(biāo)
Patrolling to Diferent Targets巡邏到不同的目標(biāo)
添加多個(gè)點(diǎn)
然后在Tick方法中添加循環(huán)判斷,讓Enemy在多個(gè)點(diǎn)中跑起來


他在視頻中提到了,如何避免Enemy多次隨到同一個(gè)目標(biāo),他是將多個(gè)目標(biāo)添加進(jìn)入了一個(gè)數(shù)組
然后執(zhí)行這個(gè)數(shù)組
我的思路是 生成序號,讓moveto執(zhí)行這個(gè)序號,避免重復(fù)
172?Patrol Wait Time巡邏等待時(shí)間
Adding a wait time between patrol points在巡邏點(diǎn)之間增加一個(gè)等待時(shí)間
重新調(diào)整一下代碼
新建MoveToTarget方法,專門用來放置moveto的功能

替換掉beginplay和tick里面的代碼
需要用到FTimerHandle 計(jì)時(shí)器
創(chuàng)建一個(gè)計(jì)時(shí)器和計(jì)時(shí)器調(diào)用的方法void PatrolTimerFinished()
同時(shí)創(chuàng)建一個(gè)最大時(shí)間和最小時(shí)間用于隨機(jī)
在beginplay中,調(diào)用方法
然后將其他地方的movetotarget方法 替換這個(gè)
調(diào)試代碼,進(jìn)入有游戲,發(fā)現(xiàn)enemy會到達(dá)目標(biāo)點(diǎn)后進(jìn)入等待
173?Pawn Sensing Componentpawn感應(yīng)組件
Chasing the character when seen被看到時(shí)追趕角色
創(chuàng)建組件和初始化
創(chuàng)建方法
174?Enemy States
Patrolling, Chasing , and Attacking巡邏、追捕和攻擊
給敵人添加狀態(tài)
新建狀態(tài)的變量,初始化為巡邏狀態(tài)
給tick里面的方法添加上狀態(tài)判斷
在Seenpawn方法里面,加上跟蹤玩家的方法
175?Enemies Losing Interest敵人失去興趣
back to patrolling 回歸巡邏
修改CheckCombatTarget方法
當(dāng)角色不在距離內(nèi),則降低移動速度,向巡邏點(diǎn)移動

176?Attack Radius攻擊半徑
tering the Attacking state進(jìn)入攻擊狀態(tài)

177?Agro When Hit被攻擊時(shí)的敵人
Let's Anger the Enemy讓我們激怒敵人

178Arming the enemy武裝敵人
getting more weapons獲得更多的武器
ue5:修改靜態(tài)網(wǎng)格體中心點(diǎn)坐標(biāo)位置BV1v3411m7qv
將導(dǎo)入的模型修改中心點(diǎn)位置后,添加為新的武器