UC中只有一种怪Bot,这是一种很简单的怪,它不会跑,只会旋转并原地射击,所以也没有用什么行为树之类的,所以这里围绕Bot怪如何发现玩家、攻击玩家、被玩家攻击分析Bot怪

image

1 当游戏开始时

可以看到在编辑器时Bot怪是没有带武器的,是在游戏开始是把武器刷出来,放在手上的

image

2. 发现玩家

当游戏开始时,Bot怪就启动了一个0.5秒的定时器,执行CheckForPlayer去扫玩家,

image

CheckForPlayer实现是简单的,就是计算Bot怪的头与玩家的Camero的距离,如果小于一个值,就认为是发现玩家了,然后计算出Bot怪的旋转量,为什么要计算这个旋转量,因为Bot怪的视野,也就是玩家与Bot怪之间形成的夹角不能小于31度,否则Bot怪就无视玩家了

image

imageimageimage

3攻击玩家

攻击玩家是Bot怪AI最有趣的部分,总体逻辑来说,Bot怪的Update(Tick)事件里,会一直检查是否发现了玩家,如果是就会一真调整自己的方向,使自己与玩家的夹角大于31度,然后会设置一个很重要的变量HasLOS,这个变量会改变Bot怪动画BP里的状态机由Idel转向Shoot,然后播放Shoot动画,Shoot动画会有一个Notify,通知Bot怪射击

image

image

Shotting动画里的Notify

image当播放到SpawnProjectile这一帧时,就会触发Bot怪射击了

image这时就调用武器射击

3Bot怪被刀划

image

Bot怪被刀划后,HitPoints-2,在击中位置刷一个血污效果,并且给它一个冲力,然后怪就死亡了,

image

4. 被子弹击中

imageimageimage

 

-----------转载请标明出处