UE4(虚幻4)原创AI教程,教你如何掌握AI自动攻击
发表于2016-04-04
关于虚幻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可移动的范围 ![]() 测试一下吧,看是否成功 |