类幸存者游戏自定义AI教程三之BOSS AI
修改于06/1396 浏览案例分享
这期带来BOSS的自定义AI,先讲解下我的项目里BOSS行动逻辑。(视频中发射红蓝法球是BOSS天赋技能,其他三个是公共技能)
1.BOSS是近战追逐玩家类型,一直追着主角自身带被动碰撞伤害。
2.BOSS拥有三个公共技能池,分为大招池, 中招池, 小招池。 每个技能池都有5个技能,使用的是公共CD,当公共CD冷却好的时候,根据随机到的值,决定是哪个技能池, 在从技能池中,随机一个技能, 如果随机的是小招池或者中招池,那么下次随机到的大招概率会增大。随到大招池则清空累加概率。有点像抽卡。
3.BOSS拥有一个天赋技能,每只BOSS都有自己独享的一个技能,天赋技能的CD用的是技能本身CD和公共技能CD不冲突。
![TapTap](https://img2.tapimg.com/moment/etag/FhSKr_jj0ZQSuy6HKH-hkep08TmR.png?imageMogr2/thumbnail/1080x9999%3E/quality/80/format/jpg/interlace/1/ignore-error/1)
BOSS AI有8个行为表
AI参数表中的参数(key)解释
__ai_target :当前单位锁定的敌人,类型:单位。用于单位进行追击和攻击
__next_skill : 单位将要释放的技能,类型:技能。用于单位释放技能
__ai_cast_timer : 技能计时器,类型:计时器。用于控制单位技能释放流程
__ai_bosstf_yc:天赋技能延迟变量 类型:布尔。用于判断BOSS天赋技能是否可以开始施放
__ai_skilltype_value:公共技能的叠加概率值 类型:数值。用于提高BOSS技能随机的权重
__ai_skillatk_cd:公共CD变量 类型:布尔。用于判断公共技能CD是否冷却完成
__ai_atk_timer:公共CD计时器,类型:计时器,当公共CD进入冷却的时候,就要开启一个计时器,让公共CD变量在规定时间后,冷却完成
BOSS_AI行为表有8个,多了个找准备施放的天赋技能行为。和之前近战AI的行为不同的有4个,
设置技能CD:
设置技能CD多了个BOSS天赋技能在5秒才能施放的操作,因为我想让BOSS在创建一段时间后才能用天赋技能。根据自身需求添加。
![TapTap](https://img2.tapimg.com/moment/etag/FsWQ1JMqrecYUaNTIFLUc7C2gkhV.png?imageMogr2/thumbnail/1080x9999%3E/quality/80/format/jpg/interlace/1/ignore-error/1)
找准备施放的天赋技能:
1. 判断 单位将要释放的技能是否不为空,不为空跳出当前行为表
2 .判断天赋技能延迟变量 是否为空,为空跳出当前行为表(正常不会为空,设置技能CD的行为表设置过了,保险起见)
3 .天赋技能延迟变量 为真且目标不为空时,延迟结束。开始查找自身的天赋技能,BOSS的技能添加了一个自定义字段,技能类型,类型为4代表天赋技能。 当冷却时间、技能类型、施法类型都满足时。赋予 单位将要释放的技能。
4.剩余的操作和之前一样 ,如果找到了合法技能但是因为各种原因8秒内却没有放出去就清空技能和目标。
![TapTap](https://img2.tapimg.com/moment/etag/FsFHZ-8C6jZ5_mFDV4IK2Q88huYx.png?imageMogr2/thumbnail/1080x9999%3E/quality/80/format/jpg/interlace/1/ignore-error/1)
![TapTap](https://img2.tapimg.com/moment/etag/FokNtZ-IR2Giip3i12k1BETOJ525.png?imageMogr2/thumbnail/1080x9999%3E/quality/80/format/jpg/interlace/1/ignore-error/1)
![TapTap](https://img2.tapimg.com/moment/etag/FnrrVZy2iesANOGOynVUB6HVXi7n.png?imageMogr2/thumbnail/1080x9999%3E/quality/80/format/jpg/interlace/1/ignore-error/1)
![TapTap](https://img2.tapimg.com/moment/etag/FnZjSN4TBaNKlPnABFBFlNrblmgy.png?imageMogr2/thumbnail/1080x9999%3E/quality/80/format/jpg/interlace/1/ignore-error/1)
找准备施放的普通技能:
1.取公共技能的叠加概率值 为空设置初始值为零
2.取公共CD变量 为空设置初始值,不为空则赋值给公共技能是否冷却完成变量
3.判断公共技能是否冷却完成和单位将要释放的技能,符合情况跳过当前AI行为表,执行下个行为表
4。当前单位锁定的敌人不为空,开始筛选技能
5.判断技能类型(1小招 2 中招 3大招 4天赋 )扔进对应技能数组,根据技能权重和公共技能的叠加概率值来确定取到的Boss技能类型。根据取到的Boss技能类型(1小招 2 中招 3大招),获取取到技能组。
6.取到的Boss技能类型如果为3,公共技能的叠加概率值归零,否则公共技能的叠加概率值增加。
7.从取到技能组随机一个技能,赋予单位将要释放的技能。
8.如果找到了合法技能但是因为各种原因8秒内却没有放出去就清空技能和目标
![TapTap](https://img2.tapimg.com/moment/etag/Fgc1YuRG4qaZWHPL9MPKlLCIO0lV.png?imageMogr2/thumbnail/1080x9999%3E/quality/80/format/jpg/interlace/1/ignore-error/1)
![TapTap](https://img2.tapimg.com/moment/etag/FmVsI_LbDJ5_lxkFJqGTIJ2uTo2M.png?imageMogr2/thumbnail/1080x9999%3E/quality/80/format/jpg/interlace/1/ignore-error/1)
![TapTap](https://img2.tapimg.com/moment/etag/FpgqwaqS-AYaWgzeY8kADANfvqlo.png?imageMogr2/thumbnail/1080x9999%3E/quality/80/format/jpg/interlace/1/ignore-error/1)
![TapTap](https://img2.tapimg.com/moment/etag/Fhi032ltZhA1k-KeVzgRnlgOf8rn.png?imageMogr2/thumbnail/1080x9999%3E/quality/80/format/jpg/interlace/1/ignore-error/1)
![TapTap](https://img2.tapimg.com/moment/etag/Fgj29AoWkCkq1P5WyMe5eDWmoAEx.png?imageMogr2/thumbnail/1080x9999%3E/quality/80/format/jpg/interlace/1/ignore-error/1)
![TapTap](https://img2.tapimg.com/moment/etag/FmX363FWhJzlV9smYXKOJ6TpkngU.png?imageMogr2/thumbnail/1080x9999%3E/quality/80/format/jpg/interlace/1/ignore-error/1)
找到技能就施放:
1.单位锁定的敌人和单位将要释放的技能不为空则AI开始施放技能
2.判断施放的技能类型,不为4(天赋技能)则公共技能进入CD
3.清空技能计时器和单位将要释放的技能。
![TapTap](https://img2.tapimg.com/moment/etag/FkpoVJcErUtFCC-CatlocJv2JCqc.png?imageMogr2/thumbnail/1080x9999%3E/quality/80/format/jpg/interlace/1/ignore-error/1)
![TapTap](https://img2.tapimg.com/moment/etag/FgTqt--0ozw8nJZqB-4Al7XLG5fe.png?imageMogr2/thumbnail/1080x9999%3E/quality/80/format/jpg/interlace/1/ignore-error/1)
到此BOSS的AI就完成了,大家可以根据自己项目的需要来修改BOSS的AI,比如有多阶段的BOSS,不同阶段的BOSS有不同的技能,或者超过一段时间没打死BOSS就施放秒杀技能的BOSS。