虚幻引擎 UE4敌人AI的一点初探究 2017-03-21 共 761 字 大约 2 分钟阅读 UE4的AI严重缺乏相关的教程和文档,在搞AI的时候可谓是进了一大堆坑,然后在各种文档和教程中慢慢退坑。在各种试错的初期,各种五花八门的方法都试了一下,最终选择敌人的攻击招式写在敌人的蓝图里,行为树来Roll点数选择攻击模式的大方向中。目前来看,这样的方式是最好的。敌人蓝图与AI蓝图和行为树通讯的时候,使用Cast to功能即可。考虑到个人的游戏是类黑魂向的,所以远程型的敌人暂不考虑。敌人初始化状态,使用了Enum列表,此列表与AI蓝图和行为树共享,方便蓝图与行为树之间通讯。 类似巡逻等简单的行为,我选择直接在敌人蓝图内写好相关事件节点,在拖到编辑器内直接选择相关Enum初始化即可。同时在视野侦察方面,我选择了内置的PawnSensing功能的OnSeePawn事件来检测玩家是否进入视野,同时此功能还有噪音获取相关的事件,我还没有细化所以暂且不探究相关内容。 所以敌人的行为大概为:在关卡内初始化–>根据初始化内容来巡逻或在原地等待–>发现玩家–>通知AI蓝图进入战斗状态并运行行为树。 攻击招式同样建立了Enum来选择,目前仅仅是普通攻击,暂未加入连招等攻击方式。Roll点数与玩家距离来决定攻击方式,并且使用行为树Service来控制AI行为。虽然现在仅仅是早期阶段,看起来AI运行的还不错。 一些坑: 每次在Roll到新的行动时,要清除已存在的黑板键值,否则会按照默认的从左到右模式执行,如果行为多了这种方法会很蛋疼,在考虑寻找更多的教程和解释来按照期望的方式执行。 行为树的AI除了选择行为方式外,不做任何攻击等判定,判定全部交给蓝图来做。 攻击等行为调用在任务蓝图中使用Cast To来完成。 需要一个相同种类、或者是敌人的父类蓝图来驱动,否则一个敌人一个蓝图这样会造成大量低效率文件,让修改工作更蛋疼。