类幸存者游戏自定义AI教程一
修改于06/13384 浏览案例分享
这系列教程为大家带来,类幸存者游戏自定义AI的讲解(基于2024 0.3版本),大致分为小怪自定义AI,BOSS自定义AI,还有角色自身AI(没错,我给自身角色也加了AI,用AI来控制自身技能的释放)
首先,幸存者类的游戏怪物一般自身都有一个被动技能(土豆兄弟,刀刀兄弟,吸血鬼幸存者等),就是碰撞到玩家会对玩家造成伤害,那么在星火里怎么实现这个功能。
我的实现是制作一个怪物通用被动技能
![TapTap](https://img2.tapimg.com/moment/etag/FonZ0uYSp18y4eQA1nhRIaZpGie9.png?imageMogr2/thumbnail/1080x9999%3E/quality/80/format/jpg/interlace/1/ignore-error/1)
在获得技能时给怪物添加一层BUFF
![TapTap](https://img2.tapimg.com/moment/etag/FqZYKWSTFJ-jFbpxH68JhJ9230be.png?imageMogr2/thumbnail/1080x9999%3E/quality/80/format/jpg/interlace/1/ignore-error/1)
BUFF每隔0.4秒检测自身周围对敌人造成伤害。
怪物的碰撞半径、碰撞伤害都可以通过公式动态获取,实现一个被动技能所有怪物通用(不同怪物的大小和碰撞伤害肯定会不同)。
这边我还修改了一个单位属性,是否该开启怪物碰撞伤害,为什么会有这个属性。比如我制作了一只野猪怪物,野猪的技能是冲锋,冲锋的伤害是100,而野猪碰撞的伤害是50,我想在野猪冲锋攻击到玩家的时候 ,只受到冲锋的伤害而不会有碰撞伤害。所以在野猪在冲锋的时候,需要关闭掉怪物碰撞伤害。等冲锋结束完, 在开启野猪的碰撞伤害。
![TapTap](https://img2.tapimg.com/moment/etag/FoTJxrDcUQ8nPEWzW2IapJuko6t9.png?imageMogr2/thumbnail/1080x9999%3E/quality/80/format/jpg/interlace/1/ignore-error/1)
在是否开启怪物碰撞伤害为1的时候才执行怪物碰撞伤害逻辑
在讲解自定义AI前,建议大家去看看官方自定义AI介绍。
我们来讲解下第一种小怪的自定义AI.
如视频里第一种怪物, 这种怪物没有其他技能,只会一直追逐着玩家,然后靠着通用碰撞技能给玩家造成伤害。
让我们来解析下这种AI
AI参数表中的参数(key)解释
__ai_target :当前单位锁定的敌人,类型:单位。用于单位进行追击和攻击
![TapTap](https://img2.tapimg.com/moment/etag/FoHKmviZmGaSy8_2dl11La4qZHVo.png?imageMogr2/thumbnail/1080x9999%3E/quality/80/format/jpg/interlace/1/ignore-error/1)
AI行为表只有三个,都是拿官方行为表进行修改
行为表:行为表在返回真的时候会停止这一轮行为树, 返回假的时候 跳过当前AI行为表,执行下一个AI行为表
1 失控 : 这个直接原封不动复制官方的就好。
2战斗中移动:这个复制官方的修改一下。先将当前单位锁定的敌人赋予目标单位,然后进行一系列判断 目标单位是否不为空、AI单位是否可以移动、目标单位是否存活。
都满足的话,判断目标点和AI自身点的距离,当距离大于设定的值,且目标点没有没有碰撞,就开始移动到目标点。
![TapTap](https://img2.tapimg.com/moment/etag/Fr1orkURKQ_slwawUyojTtyHrwmX.png?imageMogr2/thumbnail/1080x9999%3E/quality/80/format/jpg/interlace/1/ignore-error/1)
![TapTap](https://img2.tapimg.com/moment/etag/Fuz7v7qKhKfWPWm47wjbl1YKS1Mr.png?imageMogr2/thumbnail/1080x9999%3E/quality/80/format/jpg/interlace/1/ignore-error/1)
3 搜索敌人 :
3.1先判断目标单位是否为空,有目标但是目标是无效单位 或则 目标不是敌人就清空目标。目标不为空且是有效单位等,就跳过这个AI行为表逻辑。执行下一个AI行为表。当目标为空的时候,
3.2 执行AI搜索器搜索目标。这里的默认搜索范围是单位属性搜敌范围(AI),接下来为了保险起见 ,在判断下目标是否为空。
![TapTap](https://img2.tapimg.com/moment/etag/Fl7L0WUOJMsR36o_qiPsfxaz74EH.png?imageMogr2/thumbnail/1080x9999%3E/quality/80/format/jpg/interlace/1/ignore-error/1)
![TapTap](https://img2.tapimg.com/moment/etag/Fpg1esjSkvYapVevr-3dOu4FHzHp.png?imageMogr2/thumbnail/1080x9999%3E/quality/80/format/jpg/interlace/1/ignore-error/1)
这样一个无脑追你的追逐怪的AI就完成了。
这边还有一个建议,如果采用这种碰撞方式的,一般给角色添加一个受击保护机制,在受到伤害后有0.5S 或者1S的无敌或者伤害免疫时间, 这样防止怪物很多的时候一下子就被怪物创死。
下一期带来近战带技能的小怪AI,远程小怪AI。瞎鸡儿走的小怪AI,光环小怪AI。