UE4(虚幻4)原创AI教程,教你如何掌握AI自动攻击

发表于2016-04-04
评论1 1.05w浏览

  关于虚幻4-AI的教程比较少,而且一般都难于入手,于是便弄了个简单容易上手的教程,希望能够给新手带来帮助,本教程基于虚幻4引擎4.10.2版本制作。
  本教程最终效果,当玩家靠近AI 1000码范围内,AI会自动跟随玩家,靠近玩家150码范围后开始播放攻击动作,如果玩家逃离AI 1000码范围后,AI又会重新进入闲置状态



一:我们使用第三人称模板建立项目:命名为AIAttackDemo

二:给项目新建一个文件夹命名为:AI



三:在AI文件夹下,创建行为树,黑板,AI角色,AI控制器,AI枚举类型状态

1、右键弹出菜单中选择行为树、黑板:

 

分别命名为AIBehaviorTree、AIBlackboardData
在黑板中,新建Object:Target,Enum:State,其中Object选择Acotor,Enum选择AIEnum




2、将第三人称的角色拖拽到AI文件夹,复制出一份,命名为AICharacter

 

因为自带的角色没有攻击动作,于是本教程所用模型及动画为官方库中的MixamoAnimPack,大家可以自行选择下载使用。



设置AICharacter新的模型及动画蓝图,可以自行选择删除AICharacter中的摄像机组件以及事件中的所有蓝图



3、基于AIController新建一个AI控制器,命名为AIControllerDemo

 

 

4、新建枚举类型,命名为AIEnum,用于记录AI的状态,添加内容:Idle、Combat(分别为闲置状态及战斗状态)

 



四:绑定AI控制器AIController到AI角色AICharacter,并在AI控制器AIController事件中调用行为树AIBehaviorTree




五:打开行为树AIBehaviorTree
1、如果拥有多个黑板情况下,在Root中选择AIBlackBoardData。



2、新建服务Service,可在内容浏览窗口中重新命名为:BTService_AI

 
打开BTService_AI,新建两个BlackBoard类型变量,分别命名为State_Black、Target_Black,分别用于记录AI状态以及追踪目标
初始化AI状态为Idle



每帧检查AI与玩家的距离,如果在1000码范围内,则进入战斗状态,否则恢复到闲置状态



3、AIBehaviorTree中,在root中下拉一个选择器Selector,右键将BTService_AI附在selector上,将State_Black和Target_Black分别绑定为State及Target



之后再selector下方拖拉出两个序列Sequence,分别为序列添加黑板,将黑板的state值分别设置成Idle和Combat




Idle状态无动作,Combat状态下,添加一个MoveTo,将移动的目标选择为Target



4、新建一个任务Task,在内容浏览器中重命名为:BTTask_Attack

 

在AICharacter中新建一个攻击事件,播放角色攻击动画



打开BTTask_Attack
调用攻击事件,如果AI距离玩家大于200码则重置AI动画



调用BTTask_Attack,所有行为树已经完成,如下



测试一下,结果发现啥都没有发生是不是,因为还少了一个最为关键的步骤,导航网格没有拖放到地图中。

六:拖放NavMeshBoundsVolume到地图中

 

设置成3000*3000*1000,将整个关卡地图包裹其中,按下P键可查看网格路径,绿色表示AI可移动的范围



测试一下吧,看是否成功

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引

0个评论