UE4敌人AI的一点初探究

UE4的AI严重缺乏相关的教程和文档,在搞AI的时候可谓是进了一大堆坑,然后在各种文档和教程中慢慢退坑。在各种试错的初期,各种五花八门的方法都试了一下,最终选择敌人的攻击招式写在敌人的蓝图里,行为树来Roll点数选择攻击模式的大方向中。目前来看,这样的方式是最好的。敌人蓝图与AI蓝图和行为树通讯的时候,使用Cast to功能即可。考虑到个人的游戏是类黑魂向的,所以远程型的敌人暂不考虑。敌人初始化状态,使用了Enum列表,此列表与AI蓝图和行为树共享,方便蓝图与行为树之间通讯。

20170321_01_Enemy_InitializeVar.jpg

类似巡逻等简单的行为,我选择直接在敌人蓝图内写好相关事件节点,在拖到编辑器内直接选择相关Enum初始化即可。同时在视野侦察方面,我选择了内置的PawnSensing功能的OnSeePawn事件来检测玩家是否进入视野,同时此功能还有噪音获取相关的事件,我还没有细化所以暂且不探究相关内容。

20170321_02_OnSeePawn.jpg

所以敌人的行为大概为:在关卡内初始化–>根据初始化内容来巡逻或在原地等待–>发现玩家–>通知AI蓝图进入战斗状态并运行行为树。

20170321_03_AIBluePrint.jpg

攻击招式同样建立了Enum来选择,目前仅仅是普通攻击,暂未加入连招等攻击方式。Roll点数与玩家距离来决定攻击方式,并且使用行为树Service来控制AI行为。虽然现在仅仅是早期阶段,看起来AI运行的还不错。

20170321_04_BT.jpg

20170322_05_BTT_NormalAttack.jpg


一些坑:

  • 每次在Roll到新的行动时,要清除已存在的黑板键值,否则会按照默认的从左到右模式执行,如果行为多了这种方法会很蛋疼,在考虑寻找更多的教程和解释来按照期望的方式执行。
  • 行为树的AI除了选择行为方式外,不做任何攻击等判定,判定全部交给蓝图来做。
  • 攻击等行为调用在任务蓝图中使用Cast To来完成。
  • 需要一个相同种类、或者是敌人的父类蓝图来驱动,否则一个敌人一个蓝图这样会造成大量低效率文件,让修改工作更蛋疼。
© 2011 - 2023 熊窝 基于 Hugo 构建,使用 NordTheme For Hugo 主题