YDWE编辑器系列教程三:触发编辑器
文章目录
- 一、触发器入门
- 1.1 使用物品实现英雄变身(第7期)
- 1.1.1 物编设置:制作变身物品
- 1.1.2 触发实现
- 1.1.3 测试与拓展
- 1.2 自定义秘籍与升级奖励系统(第10期)
- 1.2.1 制作自定义秘籍(聊天事件触发)
- 1.2.2 制作升级奖励(单位事件触发)
- 1.3 彩票抽奖系统(第11期)
- 1.3.1 物编设置
- 1.3.2 触发实现
- 1.4 游戏难度选择与胜利条件设置(第34期)
- 1.4.1 物编设置
- 1.4.2 触发实现
- 1.4.3 胜利条件设置(第23期)
- 二、 英雄选择与复活系统
- 2.1 基础实现(酒馆选择)(第12期)
- 2.1.1 物编设置(英雄选择按钮)
- 2.1.2 触发实现
- 2.2 随机选人(第27期)
- 2.2.1 物编设置
- 2.2.2 触发实现
- 2.3 重新选人(第29期)
- 2.4 英雄倒计时复活(第28期)
- 2.3.1 物编设置
- 2.3.2 触发实现
- 三、物品进阶
- 3.1 物品合成系统(第8期)
- 3.1.1 基础实现
- 3.1.2 设计要点与拓展
- 3.2 物品形态切换(第13期)
- 3.3 🎒 多重背包系统(第13期)
- 3.3.1 实现逻辑分析
- 3.3.2 测试地图分析
- 3.4 物品定时刷新(第14课)
- 3.4.1 物编设置
- 3.4.2 触发实现
- 3.5 物品掉落系统(第19课)
- 3.5.1 初始化 - 设置奖池
- 3.5.2 触发实现
- 四、触发器技能
- 4.1 属性伤害技(第44期 QQ群地图:魔法效果)
- 4.1.1 物编设置
- 4.1.2 伤害触发实现(死亡一指)
- 4.1.3 技能拓展
- 4.2 漂浮文字(第46期,QQ群地图:魔法效果)
- 4.3 N段技能模拟(第47期,QQ群地图:单体攻击)
- 4.3.1 物编设置
- 4.3.2 触发实现
- 4.4 位移技能(第49期 QQ群地图:单体攻击)
- 4.4.1 传送门位移
- 4.4.2 触发器实现位移
- 4.5 自定义投掷物(第50期 QQ群地图:技能幻想)
- 4.5.1物编设置
- 4.5.2 触发实现(蓄力模拟- fireball)
- 4.5.3 伤害实现
- 4.6 天灾系统(预警技能)(第51期 QQ群地图:单体攻击)
- 4.6.1 物编设置
- 4.6.2 触发实现
- 4.7 多重技能(第52期 QQ群地图:技能幻想)
- 4.7.1 物编设置
- 4.7.2 触发实现(核循环角度+多马甲协同、命令串)
- 4.8 群体技能与引导技能(第53期 QQ群地图:技能幻想)
- 4.8.1 群体驱散
- 4.8.2 引导技能casting snow
- 4.8.3 总结
- 五、游戏系统
- 5.1 刷怪系统
- 5.1.1 技能刷怪(黑暗之门召唤,第32期)
- 5.1.2 触发器刷怪(第42期)
- 5.2 魔法书实现天赋系统/装备萃取(第45期)
- 5.2.1 隐藏技能图标
- 5.2.2 优化物品栏(天赋系统装备萃取)
- 5.3 工资系统(第56期)
- 5.4 AI逻辑
- 5.4.1 官方预设AI及其局限性(第23期)
- 5.4.2 YDWE编辑器AI(第23期)
- 5.4.3 给电脑AI选英雄(第54期)
- 5.4.4 实现电脑AI的战场功能(第55期)
全文参考B站《合集·魔兽争霸地图编辑器:手把手一起学》系列视频。
- 地图链接:https://pan.baidu.com/s/1agewSy1BDDcJPpnTrg8LyA,提取码:sl3c。地图特色功能解析:
- YDWE链接:https://pan.baidu.com/s/1Jsk20QD491FmmleTVeKM6A,提取码:exs1
- 游戏本体:https://dl.3dmgame.com/pc/138438.html
一、触发器入门
按下 F4
打开触发器编辑器,界面分为三个部分:
- 左侧文件夹结构:用于管理和组织所有触发器,可新建文件夹分层归类。
- 中部注释区:可填写触发器用途说明,方便日后阅读和维护。
- 下部函数区:以可视化的方式展示触发器的事件、条件和动作,这是逻辑编写的核心区域。
有时打开他人地图会看到“自定义文本”形式的代码,这是被转换后的格式。可以将其复制到新编辑器中,通过“撤销转换触发器”功能恢复为易读模式。
触发器的核心三要素:
- 事件:定义何时触发此逻辑(例如:单位获得物品、单位死亡等)。
- 条件:对事件进行筛选和判断(例如:判断单位是否是英雄、物品是否为特定类型等)。
- 动作:满足条件后执行的具体操作(例如:删除单位、创建新单位、发送信息等)。
通俗理解:当事件发生时,如果满足所有条件,则执行一系列动作。
1.1 使用物品实现英雄变身(第7期)
流程规划:
- 事件:一个英雄获得了一件物品。
- 条件:判断获取的单位是英雄, 判断获取的物品是特定的“变身物品”。
- 动作:删除(注意:是删除,不是杀死,杀死会复活)原来的英雄; 在原来英雄的位置,为玩家创建一个新的强大英雄单位。
1.1.1 物编设置:制作变身物品
- 选择基础物品:任意物品均可,其原有技能效果不影响功能。
- 修改文本:将名称和所有的说明文本改为
“尝尝地狱的烈焰吧!”
,并使用醒目的颜色(如红色)突出显示,增强辨识度。 - 更换图标:选择一个霸气的图标,例如技能下拉菜单中的
“粉碎”
或“更新”
,使其更具主题感。 - 调整模型与缩放:
- 模型:在
“魔法效果”
下拉菜单中找到灵魂燃烧(目标) 的模型,其动态效果非常适合“地狱烈焰”的主题。 - 缩放:适当调大模型缩放比例(如
200%
),让物品在地面上更醒目。
- 模型:在
1.1.2 触发实现
-
新建触发器:命名为
item_change_hero
(注意:请使用英文或拼音命名,避免中文可能引发的Bug)。 -
添加事件:单位 - 任意单位 获得物品。
-
设置条件:
-
条件一:
布尔值 - ((触发单位) 是 英雄) 等于 TRUE
。确保只有英雄捡起物品才会触发。
-
条件二:
物品 - ((被操作物品) 的类型) 等于 (尝尝地狱的烈焰吧!)
。确保只有我们制作的特定物品才会触发效果。
-
-
编写动作:
-
动作一:
单位 - 删除(触发单位)
。关键点:必须用“删除”而非“杀死”,删除后英雄无法被复活,符合变身逻辑。 -
动作二:
单位 - 创建单位给((触发玩家)) 在(((触发单位) 的位置)) 面向 默认建筑朝向 度
。
-
在“单位类型”中选择你想要变身成的目标单位,例如中立的火焰巨魔。
-
位置选择
(触发单位) 的位置
,确保新单位出现在旧单位消失的地方。
-
1.1.3 测试与拓展
进入游戏进行测试,英雄可以正常移动、拾取其他物品(如精灵之卵、能量之书)并使用其功能。当英雄拾取“尝尝地狱的烈焰吧!”时,瞬间被替换为火焰巨魔,完美实现变身效果。这个简单的触发器揭示了强大的可能性:
- 英雄转职系统:将物品放在商店或酒馆中,玩家购买后即可将基础英雄转变为更高级的职业,属性技能飞升。
- 形态切换:可以制作多个不同的变身物品,让英雄在多种形态之间切换,以适应不同的战斗需求。
- 剧情推进:作为任务奖励,获得关键物品后英雄觉醒,变为更强大的形态。
1.2 自定义秘籍与升级奖励系统(第10期)
本期我们学习两种动态生成物品的方式:
- 主动式:通过捕捉玩家聊天信息生成物品(自定义秘籍)。比如在聊天框中输入
-book
,镜头中央会立即出现一本强大的“史诗升华之书”;输入-axe
,则会获得一把带有炫酷闪电特效的武器。 - 被动式:通过捕捉单位升级事件来奖励物品(升级奖励)。比如英雄每次升级时(无论是打怪还是吃经验书),都会自动获得一个“企鹅汤”作为奖励,可以立即使用来提升属性。
1.2.1 制作自定义秘籍(聊天事件触发)
秘籍的本质是捕捉玩家输入的特定聊天信息,并以此作为事件来执行动作。
-
创建触发器:新建一个触发器,命名为
cheating_book
(注意:使用英文或拼音命名)。 -
设置事件: 新建选择
玩家 - 玩家聊天信息
,在弹出窗口中选择:发送玩家
:选择任意玩家
。聊天信息
:在值的部分输入-book
(你想要的秘籍命令)。匹配方式
:信息过滤方式务必选择 完全匹配。这样只有精确输入-book
时才会触发,输入-books
则不会,避免误触发。
-
设置动作:新建动作, 选择:
物品 - 创建物品在点
, 在弹出窗口中:物品类型
:选择你想要生成的物品,例如史诗升华之书
。创建点
:选择镜头->镜头目标点
,进一步设置镜头点为玩家当前镜头
。这是关键! 这会使物品直接生成在当前输入秘籍的玩家屏幕正中央,便于拾取。
将上述触发器复制一份,重命名为 cheating_axe
,并将其中的聊天信息和创建物品分别修改为 -axe
和你的武器物品。这样,你就拥有了两个秘籍。
1.2.2 制作升级奖励(单位事件触发)
-
创建触发器:新建一个触发器,命名为
hero_level_up_bounty
。 -
设置事件:新建事件, 选择:
单位 - 任意单位 - 提升等级
。这个事件会捕捉地图上所有单位的升级行为。 -
设置条件:新建条件,选择:
布尔值 - ((触发单位) 是 英雄) 等于 TRUE
。这个条件确保了只有英雄升级时,后续动作才会执行。 -
设置动作:新建动作,选择
英雄 - 创建物品给英雄
。 在弹出窗口中:物品类型
:选择作为奖励的物品,例如企鹅汤
(永久加智力的消耗品)。奖励最好设置为“神符类”物品,这样英雄物品栏已满时,它也会在瞬间被自动使用,不会造成丢失,玩家能立即享受到升级收益。英雄
:选择(事件响应-触发单位)
。 这样,升级的英雄会直接将该物品收入物品栏。
这个 “升级奖励” 系统是解答 “如何让英雄每次升级获得额外属性点”的最佳方案之一。你不需要复杂地直接修改属性,只需奖励一本永久增加属性的“书”(或者是神符类物品),让英雄自动使用即可,简单且高效。
1.3 彩票抽奖系统(第11期)
在本期教程中,我们将实现一个有趣的彩票抽奖系统。玩家可以购买"福利箱子"(价格1000金币)。奖池共有30个物品,其中3个为大奖,27个是保底金币(获得物品金币)返还。箱子点击购买时,还有一个特效。
- 国王之冠(大奖),会进行播报
- 能量之书(中奖)、吸血面具(中奖)
- 保底奖励:250金币返现(使用金物品币实现,1/4返还)
1.3.1 物编设置
-
创建物品——福利箱子:复制"驱散"符文作为基础模板,修改名称为"福利箱子",可使用华丽颜色增强视觉效果,提升消费欲望。符文在拾取/购买时自动消失,不占用物品栏。
-
设置奖池物品:在"战役"分类中创建新物品,设置所有物品等级为5级。奖池包含30个物品:1个国王之冠、1个能量之书、1个死亡面罩,其余27个为保底金币物品 (物品分类和等级要统一)。
重要:确保所有奖池物品勾选"可被市场出售"和"作为随机物品"选项
1.3.2 触发实现
本期需要创建两个触发器:
-
抽奖核心功能(Lottery):由于使用的是神符类物品(获得即消失),无需额外删除步骤。条件中选择
全部->or多项条件
。
-
中奖公告系统(Bingo Text)
- 能量之书等神符类物品获得即激发,可选择是否提示
- 可选择对玩家组或指定玩家显示文本信息(中奖公告), 可自定义显示时间和内容
设计建议
- 多层级彩票系统:可以设计不同地区的彩票站,初期价格低廉,随着游戏难度增加,奖品更丰厚但价格更高
- 适度使用:此类随机奖励机制不宜过多,以免玩家产生疲劳感
- 透明度:明确公示中奖概率,增强游戏公平性和玩家信任度
- 如果使用非神符类物品,需要在动作中添加删除原有物品的步骤
1.4 游戏难度选择与胜利条件设置(第34期)
1.4.1 物编设置
很多地图都有设置多个难度等级,因为不同玩家水平参差不齐,一套数值无法通吃;而且有梯度才能反复游玩,延长地图寿命。整个实现逻辑的伪代码如下:
1. 游戏 0 秒 → 弹出“选择难度”对话框
2. 玩家点击按钮 → 记录难度 → 公告全玩家
3. 根据难度 → 即时修改三条核心数值: - 中立敌对单位生命倍率 - 玩家经验获得倍率 - 玩家初始金币
首先创建两个变量:
变量名 | 类型 | 数组 | 说明 |
---|---|---|---|
Difficult_Window | 对话框 | 否 | 存储主窗口 |
Difficult_Button | 对话框按钮 | 是 | 存储难度等级,0=简单 1=普通 2=困难 |
1.4.2 触发实现
-
难度窗口触发
选择时间中的游戏逝去0秒作为开启事件而不是游戏初始化。对话框选择后,选择创建对话框按钮(有快捷键)。对话框设置完后,需要将其手动显示(创建的对话框默认是隐藏状态。
-
难度选择触发:选择难度按钮后,先对玩家组(所有玩家)发送文本信息。然后设置玩家属性(黄金)为100,英雄->玩家1的经验获得率倍数,以及玩家->中立敌对生物的生命上限倍数。
后续可以改成玩家投票、计票系统。
1.4.3 胜利条件设置(第23期)
与标准对战“摧毁所有敌人建筑”的固定模式不同,自定义地图的胜利条件是多样化的,完全由地图作者根据游戏设计来设定。其核心逻辑是:当某个特定“事件”发生时,通过“触发器”动作来宣布特定玩家或玩家组的胜利或失败。 一个典型的胜利条件触发器包含三个部分:
- 事件:什么时候判断胜利?即触发胜利检测的时机。
- 条件:在什么情况下算胜利?(可选,用于更复杂的判断)
- 动作:如何宣布胜利?即游戏结束时的具体操作。
以下是常见的游戏胜利设计模式:
-
单位事件:指定单位死亡,例如
单位 - 指定单位(如:企鹅0028)死亡
时,为一方执行游戏 - 胜利
,为另一方执行游戏- 失败
。应用场景有:- MOBA类(如DOTA):摧毁对方的“远古遗迹/冰封王座”(本质上就是一个高血量的特定单位)。
- RPG Boss战:击败最终Boss即可通关。
-
玩家属性事件:资源或分数达标:例如
玩家 - 玩家 现有黄金 大于等于 10000
。 应用场景:- “大富翁”或经济竞赛:谁最先积累到指定数量的金钱即获胜。可以配合
游戏 - 显示文本消息
功能,在玩家接近目标时进行公告,增加紧张感。
- “大富翁”或经济竞赛:谁最先积累到指定数量的金钱即获胜。可以配合
-
区域事件:单位进入区域: 应用场景:
- 赛车/竞速游戏:第一个到达终点线(即特定区域)的玩家获胜。
- 护送任务:将重要单位护送到指定安全区域。
-
物品事件:获得或持有特定物品:应用于**“夺宝奇兵”或“大逃杀”模式**。例如,以
单位 - 英雄获得物品
,并结合条件判断是否为特定物品(如“圣剑”)来进行设计:- 英雄获得“圣剑”时,全图公告,并开始一个30秒的
等待
或计时器。 - 30秒内,如果持有英雄被杀死,“圣剑”会掉落,计时重置。
- 新的英雄捡起“圣剑”,计时重新开始。
- 任何一个英雄成功持有“圣剑”超过30秒,则其所属势力获胜。
- 英雄获得“圣剑”时,全图公告,并开始一个30秒的
关键动作:宣布游戏结果:在事件发生后,必须使用以下关键动作来结束游戏:
游戏 - 胜利
:为一名玩家或一个玩家组(如同盟)显示胜利画面。游戏 - 失败
:为一名玩家或一个玩家组显示失败画面。
重要提示:在对抗性游戏中,通常需要同时设置胜利方和失败方,以确保游戏能正确结束并显示结果。
二、 英雄选择与复活系统
2.1 基础实现(酒馆选择)(第12期)
在本期教程中,我们将实现了一个完整的酒馆选英雄系统:
- 游戏开始时玩家没有英雄,只有一个酒馆,酒馆提供三个可选英雄:阿尔萨斯、希尔瓦纳斯、瓦斯奇,每个英雄有独立的选择快捷键(W等)
- 选择后英雄进入长时间冷却(9999秒),避免重复选择
- 英雄选择时有特效表现,选择成功后镜头自动平移至新英雄位置
这个系统虽然简单,但包含了地图制作中重要的概念:物品触发、单位创建、镜头控制和特效管理。
2.1.1 物编设置(英雄选择按钮)
-
创建英雄选择物品:使用任意物品作为基础模板,修改名称为对应英雄名称(如"选择阿尔萨斯")。再将提示工具中的"购买"改为"选择",并设置对应的快捷键。最后配置以下属性:
- 提示工具拓展:填写英雄的详细说明,鼠标悬停时显示
- 按钮位置:按照预定排列顺序设置X和Y坐标
- 黄金消耗:设置为0(初始无金钱)或按需设置不同价格
- 购买时间间隔:设置极大值(如99999)实现单次选择效果
-
创建马甲单位。马甲单位(没有模型文件,所以叫马甲,放大才能看到)是实现初始镜头控制的关键,将其放在酒馆旁边,进入游戏后镜头会自动聚焦到马甲单位位置。
-
基础属性设置: 使用血法师作为基础单位,保留英雄物品栏,添加无敌技能,碰撞体积改为0,声音设置调整为无声,最后使用英文便于查找(如"Mage_HeroSelect")
-
视觉隐藏设置:模型文件设置为无、模型缩放和**“选择缩放”(选择圈)都设为最小0.1、 阴影选项关闭所有阴影相关设置、所有可见属性都改为隐藏,包括状态-英雄-小地图显示**。
-
行为设置:移动-基础速度改为
0
(无法移动)、战斗攻击改为没有(不造成任何攻击或被攻击事件)、可以逃跑改为FLASE(不能逃跑)、 生命值设置较小值、 生命回复:按住Shift双击赋值,使其随时间自动死亡。视野范围调整到合适大小(控制初始镜头范围)
-
2.1.2 触发实现
创建"选择英雄"文件夹,其中包含三个类似触发器(hero_select1,2,3
),对应三个英雄。以选择阿尔萨斯为例):
- 事件:单位获得物品
- 条件: 被操作物品是"选择阿尔萨斯"按钮
- 动作
- 创建单位:在指定区域(本例是地图左侧)中心创建阿尔萨斯英雄,确保创建的英雄归属于正确的玩家
- 删除触发单位:删除购买物品的单位(重要:使用删除而非杀死,否则会重生,重复触发平移镜头)
- 平移镜头:将指定玩家的镜头平移至英雄创建位置
- 创建特效:选择全部->创建特效->绑定到单位,持续2秒
- 删除特效:特效播放完成后删除
常见问题与设计建议
-
英雄重复选择问题:当前设计中,任何单位购买选择物品都会触发英雄创建, 需要后续添加条件判断,确保只有初始马甲单位能触发
-
镜头控制: 通过马甲单位的视野范围控制初始镜头,选择后使用镜头平移实现平滑过渡
-
特效优化:使用华丽的特效增强选择仪式感。可绑定特效到单位的具体位置(如头顶、脚下),给予足够时间让特效完整播放
-
多英雄设置:可设计多个酒馆提供不同英雄组合,还可以设置不同价格的英雄,增加策略性
2.2 随机选人(第27期)
在已有酒馆选英雄系统基础上,增加随机选英雄功能,随机选择英雄可获得额外奖励(100金币)。
在进行随机选择前,需要取消勾选文件->参数设置->地图测试中的固定随机种子选项。否则每次测试时,固定的随机种子(加快地图测试速度)会生成固定的随机值,这会导致每次的选择结果是一样的,但其实随机逻辑没有做错。
2.2.1 物编设置
-
创建随机选择物品:复制现有英雄选择物品,创建新物品"随机选英雄",在提示工具拓展中,说明随机规则和奖励。按钮位置(XP)设置为(2,2)(放置在酒馆最下方),黄金消耗/购买间隔与普通英雄设置一致。图标选择其它里面的巡逻图标。
-
设置随机物品池:另外为了实现随机选择效果,需要先新建一个表示选择英雄的物品池全局变量
RandomHeroPool
,然后在之前的宝箱列表初始化触发中,添加随机英雄池设置的触发
2.2.2 触发实现
这里在动作中,使用If-Then-else判断(多项)
,增加了一个关于触发单位是否是英雄的判断。因为在游戏后期,一些其它的单位也可以购买物品,所以要进行筛选。所以第一步在确认是英雄购买时,就直接删除这个选择英雄的物品,这样商店就直接没了这个选项。
之后选择英雄->创建物品给英雄的语句,创建物品池(数学->随机整数索引)的物品给触发单位。最终,按下随机英雄选择按钮会得到一个随机的英雄选择物品,这进一步触发了这个物品的英雄选择事件。
选英雄方式 | 优点 | 缺点 |
---|---|---|
酒馆选英雄 | 英雄说明详细,头像清晰 | 无法直观看到英雄模型 |
能量圈选英雄 | 可直接观察英雄模型 | 英雄说明不易查看 |
随机选英雄 | 获得额外奖励,增加游戏随机性 | 无法自主选择心仪英雄 |
2.3 重新选人(第29期)
重选作为补救机制,需要付出代价(金币消耗)。当玩家输入聊天信息"-repick"
时,如果其金币≥100
,为玩家英雄添加"随机英雄"物品,再次触发之前的随机英雄流程,也会再次奖励金币,所以直接设置玩家金币为50
,防止无限重选。
如果重选是让玩家可以再次在酒馆自由选择英雄,就相当于比普通的选择模式多了一次试错的机会。所以重选只能还是随机选择。
另外再新建一个触发器,提示玩家只有开局30
秒内有repick
的机会,然后关闭repick
触发器:
测试效果: 首次随机英雄,获得100
金币奖励。输入"-repick"
后,英雄更换,金币变为50
。再次尝试重选,提示"只剩50金币了,没有重选的资金"。30
秒后:提示"现在不能再重选了"
思考:为了避免游戏后期,玩家英雄可以在酒馆继续选英雄,应该把上述渲染的判定从是否是英雄单位,改成是否是马甲单位。对于repick功能,改为输入repick信息后,创建马甲单位给玩家,再给他“随机英雄”物品。
2.4 英雄倒计时复活(第28期)
在魔兽本身的地图中,有两种传统复活方式:
- 祭坛复活:魔兽原版机制,每个种族的祭坛都有一个英雄训练列表,通过祭坛训练单位的方式复活英雄;
- 技能复活:如牛头人的重生技能。注意,重生技能必须设置为英雄技能,如果改为单位技能给英雄使用,复活后英雄会变成普通单位,玩家会对其失去控制。
本期要实现的是倒计时复活——英雄死亡后右上角显示倒计时,复活时间随英雄等级增加而延长(等级×5秒)。复活后保留:等级、技能点、装备等所有状态(事先使用变量存储英雄状态),复活时满蓝并带有特效(创建单位默认只有100点蓝量)。
2.3.1 物编设置
- 创建单位数组
Dead_Hero
,存储各玩家的死亡时的英雄; - 创建计算器窗口数组
Revive_Count_Window
,存储倒计时显示 - 创建计时器变量
Hero_Revive_01
,控制英雄复活时间
2.3.2 触发实现
- 英雄死亡触发,创建计时器,显示倒计时窗口:
- 英雄复活触发:倒计时到期,复活之前存储的英雄,并将其魔法恢复为100%。
注意:最好为每个玩家单独设置死亡-复活触发,避免在死亡触发事件中使用任意单位死亡检测事件,因为全地图可能每时每刻都会有单位死亡,这样做太耗游戏资源。
三、物品进阶
3.1 物品合成系统(第8期)
本期介绍的方法比手动编写完整触发器更为简单高效,我们利用的是YDWE内置的物品合成系统函数。
3.1.1 基础实现
-
新建触发器:
- 创建一个新触发器,命名为
Cooking
(或其他英文/拼音名称)。 - 事件选择
普通->地图初始化
。这意味着该合成公式在地图加载后即刻生效,并全程可用。
- 创建一个新触发器,命名为
-
添加动作:
- 在动作中,找到
系统 - 物品合成系统
。系统中都是大神们创建的一个各封装好的函数,极大简化了合成逻辑的编写。
- 在动作中,找到
-
合成公式: 函数界面允许你设置最多 6种 材料及其所需数量。如果某样材料的数量设置为
0
,系统将忽略该材料,即该物品栏位为空。例如下面的触发合成了鹅跳墙(实际为智力之书)和养蝶多(实际为生命手册)。
试试料理按钮原型是恢复神符,改了名字和说明、图标(泰瑞纳斯国王的骨灰瓮)、按钮位置(最后一个,即3,2)、物品分类(设为永久)、黄金消耗(设为0)、购买间隔(设为0)。不消耗黄金是因为开发的地图中,玩家可能是要摸索着去烹饪的(比如塞尔达),收费可能打消大家的积极性。
-
将所有这些材料物品添加到地精商店的出售列表中,以便玩家购买。
-
测试结果: 从商店购买公式所需材料,点击使用“试试料理按钮”。系统自动检测物品栏中的材料,若匹配任一公式,则删除材料并创建对应的合成品到物品栏中。合成品(如额跳墙)可以像普通消耗品一样被使用(左键点击)。
3.1.2 设计要点与拓展
要实现一个令人满意且有成就感的合成系统,需关注以下三个层面:
-
视觉连贯性 (图标与模型):材料的图标、模型与合成产出的图标、模型应有逻辑上的关联。
- 反面例子:用“斧头+木头”合成出“魔法神符”会让人感到困惑。
- 正面例子:“企鹅+空碗”合成出“一碗汤”非常符合直觉。
-
数值成长性 (属性提升): 合成产物的效果应显著强于原始材料,让玩家感到投入物有所值。
- 例子:携带“企鹅”提供+3智力,而合成出的“企鹅汤”服用后应提供更多智力(如+5),这样才能体现合成的价值。
-
经济合理性 (资源消耗与产出): 合成产物的总价值(售价或效果价值)应高于材料的总成本,但不能过于离谱,破坏游戏经济平衡。
- 反面例子:花费50金+25金材料合成出的物品只能卖15金,这会让合成行为毫无意义。
物品合成是RPG地图的核心机制之一,其应用远不止于烹饪:
- 装备锻造:将矿石、木材等基础材料合成为武器、铠甲。
- 宝石镶嵌:将宝石与装备合成,为装备添加额外属性词条。
- 附魔强化:使用消耗品对装备进行合成,全面提升其基础属性。
- 药剂炼制:混合不同的草药,制作出提供各种增益效果的药水。
关于“合成失败”:“合成失败”的底层逻辑并非真的失败,而是系统正常执行合成动作(产生成功特效、播放声音等), 但在动作最后,加入一个判定条件(如随机数)。 如果判定为“失败”,则立刻执行删除合成品或还原材料的动作,从而在表现上模拟出失败的效果。这是一个高级技巧,我们将在后续教程中详细展开。
合成失败需要有提示,只把物品消除掉,会让人不知所措。
3.2 物品形态切换(第13期)
设计一个名为“冰与火之歌”的物品,可在火形态(提升攻击力)和冰形态(提升护甲值)之间切换。切换时改变物品特效(流动火焰/冰霜效果)。测试也可以看到,即使是开了剑刃风暴,特效也能正常显示:
物品形态转换的底层实现逻辑,是两个物品单位的替换,我们先创建物品:
-
创建基础物品:使用大魔法瓶和大生命瓶作为基础模板(可消耗品),创建两个物品——冰球和火球。修改使用次数为0、使用完全消失改为False,CD间隔组设置为"物品变换"(两个物品使用相同间隔组)。
-
技能配置:冰球有三个技能——Item Convert(状态切换)、球体[weapon ice](冰霜特效)和增加护甲;火球改为火焰特效+提升攻击。
-
Item Convert
:使用智力之书或力量之书改造,属性奖励清零,更改名称和图标,设置状态-魔法施放时间间隔为10,控制切换CD,最后更改显示模型:
-
触发实现:
3.3 🎒 多重背包系统(第13期)
3.3.1 实现逻辑分析
打开示例地图->系统->翻页保留属性的多重物品栏.w3x,选择一个英雄,可以看到物品栏最后一格有一个背包按钮,点下去可以切换1号、2号和3号背包。如果三个背包物品不同,英雄的加成属性也不同。
这个切换操作的实现,同样基于"马甲单位"。系统是创建了三个地图上看不到的仓库管理员(马甲单位),背后的实现为:
-
捡取:不是一个简单的“移动”动作,而是一个“删除原物品 → 在管理员背包重新创建”的过程。
-
切换:不是在你的背包里翻页,而是切换你正在操作的那个“隐形的仓库管理员”,显示的是它的物品栏。
-
属性:你最终获得的属性,是你英雄自身的属性 + 当前正在使用的“管理员”提供的属性 (物品属性是直接加成在携带它的单位身上)的总和。
这样就实现了远超6个格子的物品栏系统,并且每个背包的属性和物品都是完全独立的。这是一种非常经典且强大的设计思路。YDWE提供了现成的多重物品栏系统,点击触发器 → 新动作 → 系统 → 多重物品栏。其中参数2是背包图标,参数3 是马甲单位,参数4是背包的个数,一般是3或4个,不宜过多,否则在英雄多的地图中,单位数量会显著增加。
3.3.2 测试地图分析
在此地图的物编🀄️可以看到,双物品栏(单位) 就是马甲单位,中立无敌,有物品栏,没有模型文件,速度为0,伤害为0,小地图不显示。参数2是物品背包(Z),其属性为:
点击这个背包图标,可以触发其技能 0[物品]:
这个技能又会调用一个魔法效果 0使用装备栏0。将其直接复制之后重置,按Ctrl+F查找原型技能名,发现是暗夜精灵类的魔法效果咆哮,对其修改了名称、说明以及模型(改为技能死亡契约)。
最后,还有一个背包(技能):物品技能,复制自中立敌对里的英雄技能 通魔(没有任何效果,可作为大多数主动技能的模板),修改了其热键、按钮位置、图标,修改其等级为10(通魔为3),也就是可以切换10次背包。所以还设置了10各等级的动作持续时间、施法持续时间、两种文本提示(第N格背包、点击切换背包)等等内容。
下表概括了这些核心组件及其功能:
组件类型 | 具体名称 (示例) | 关键设置/作用 | 所属单位/关联 |
---|---|---|---|
魔法效果 | 0使用装备栏0 | 模型改为死亡契约 ,用于视觉区分 | 被物品技能调用 |
技能 (物品) | 0[物品] | 其魔法效果关联0使用装备栏0 | 被背包(Z) 物品使用 |
技能 (主动) | 背包 | 设置10等级,每级对应不同背包;配置文本提示 | 英雄学习 |
物品 | 背包(Z) | 物品技能为0[物品] ,是切换背包的“按钮” | 英雄携带并使用 |
单位 (马甲) | 双物品栏 | 中立无敌、无模型、速度为0、有小物品栏、小地图不显示 | 系统创建,对玩家透明 |
单位 (英雄) | 恶魔猎手 等 | 添加了背包 技能 | 玩家直接操作 |
-
初始化阶段
当地图初始化或英雄被选中时,系统会为该英雄创建多个(例如3个)隐藏的“双物品栏”马甲单位。这些单位彼此独立,拥有各自的物品栏和物品。英雄自身的物品栏则用于存放背包(Z)
这个特殊的切换物品。 -
拾取物品:当英雄拾取一个物品时,触发器中可能包含了类似以下的逻辑:
- 删除地面上英雄试图拾取的原物品。
- 在当前正在使用的那个马甲单位的物品栏中,创建一个完全相同的物品。
- 这样一来,物品的逻辑所有权就转移到了马甲单位身上,其提供的属性也会加成给马甲单位。
-
切换背包(翻页):玩家点击英雄物品栏中的
背包(Z)
物品(其技能是通魔
变体的背包
技能)时:- 系统根据技能等级(第1级、第2级、第3级)判断要切换到哪个背包。
- “切换”的本质是改变玩家当前所见的物品栏来源。它通过触发器命令,将玩家屏幕上的物品栏视图从当前马甲单位切换到另一个马甲单位的物品栏。
- 同时,隐藏之前显示的马甲单位,并显示新的马甲单位。这个过程对玩家而言几乎是瞬间完成的,感觉像是在翻页。
- 界面上的文本提示(如“第1格背包”)是通过设置
通魔
(背包)技能不同等级的文本提示(Tooltip) 来实现的。
-
属性计算阶段
- 英雄的最终属性 = 英雄自身属性 + 当前处于“显示”状态的那个马甲单位所携带物品提供的所有属性之和。
- 因为马甲单位只是被“隐藏”,并未被删除,所以它们身上物品提供的属性依然有效。只不过,任何时候都只有一个马甲单位的属性会与英雄属性叠加。
- 这也是为什么切换背包后,英雄属性会立即改变的原因,因为加成来源变了。
通魔
技能是一个非常灵活的基础技能,常被用作自定义主动技能的模板。咆哮
作为一个标准的单位技能,其魔法效果被借用并修改,主要用于物品使用后的视觉反馈(那个死亡契约的模型),它本身可能不承担核心逻辑。
3.4 物品定时刷新(第14课)
本教程将指导你实现定时刷新物品的机制,比如《守望先锋》中在固定位置会刷出血包、复活等等神符类物品。刷新的主要功能包括:
- 在指定区域周期性地生成增益物品(力量之书、敏捷之书),每次刷新前清理旧物品
- 通过计时器控制刷新周期,并使用计时器窗口显示倒计时
3.4.1 物编设置
-
放置装饰物:在可破坏物中搜索“脚踏开关”,将其作为刷新点的视觉标识,摆放在地图合适位置
-
创建刷新区域:打开区域面板,使用矩形工具创建区域
buff_zone_01,buff_zone_02
(建议使用高级->“查看完整地图”功能获得俯视角以便精确定位)。不要使用中文,不要复制粘贴区域,必须手动创建。区域可以修改名称、坐标、天气和音效。
3.4.2 触发实现
-
设置计时器变量:创建全局变量,变量名Game_Time,变量类型为计时器(Timer),不设置初始值。
-
初始化计时器:游戏开始后0.5秒,启动计时器。这里不要使用地图初始化,因为地图初始化不是一个固定的时间点,这样设置无法启动计时器变量。
-
物品刷新机制:计时结束,先删除旧物品,再创建新物品。
扩展思考:
-
创建新物品前不执行删除品删除,会导致物品重复堆积,占用游戏资源,还可能引发物品捡取逻辑错误
-
如何实现随机刷新?:可使用随机数决定生成物品类型,或在区域内随机位置生成物品
-
机制扩展:增加更多刷新点、添加不同种类的增益物品、设置不同刷新周期
这个基础机制是许多高级功能的基础,熟练掌握后可以实现更复杂的游戏逻辑。
3.5 物品掉落系统(第19课)
制作地图时,设计一套优秀的掉落机制非常重要,这需要在开图前反复设计。建议先把想法完整列出,再进行触发器和物品设计,避免中途返工耽误时间,防止出现数据交叉性错误。
要实现怪物死亡后掉落相关物品,需要在单位死亡时(可以是整张地图、指定区域或固定单位的死亡)触发一个物品掉落事件,创建物品的点通常是死亡单位所在位置。
3.5.1 初始化 - 设置奖池
-
初始化奖池:创建物品类型变量
item_type
和掉落概率变量item_random_number
(整数)。前者用于存储可能掉落的物品种类,形成一个物品池;后者是一个代表物品掉落概率的随机数。这两个都是全局变量。
-
设置奖池物体及其掉落概率:选择“通过循环整数 A 动作”,将
item_type
索引又套回“循环整数A”。通过这种方式,将 1 - 9 这10个数字对应的物品类型都设置为金币,而经验之书和和生命手册都只对应一个数字。这样在 0 - 29 这 30 个数字中,金币的掉落概率就是1/3
,经验之书和生命手册掉落概率约为1/30
。
3.5.2 触发实现
这里在触发条件中设置死亡单位不是召唤物,也可以根据需求添加其他条件,如单位是否在指定区域、是否是英雄或建筑等等。生成随机数这一步,是设置变量(选择item_random_number
,选择数学函数->“随机整数”,将这个变量设为0到29之间的随机值。也可以根据需要调整最大值(如给到 60,掉落概率会再稀释一半)。
- 物品池设计:物品掉落不要做在一个大的物品池里,这样不好把控。可以设置初中高级不同区域,以及任务区域等等,设计不同的掉落表。
- 物品获取思路:获得物品的途径不应局限于杀怪,还可以通过采集、拾取、赌博等方式获取,尤其是任务物品。一直杀怪获取会降低玩家的游戏体验,要拓宽获取思路。
四、触发器技能
4.1 属性伤害技(第44期 QQ群地图:魔法效果)
我们在很多成品地图中,经常会看到一类特殊的技能:它们产生的伤害并非固定数值,而是与英雄自身属性(比如力量、敏捷、智力)、当前游戏数据(比如金币、木材数量)、甚至联盟状态等其他信息相关联。我们把这类技能称为「属性伤害技能」。 本期介绍如何通过触发器,让属性参与技能伤害的计算。
4.1.1 物编设置
死亡一指技能,固定500点法术伤害,但对魔免单位无效(没有伤害)。比如对于花岗岩傀儡——大部分指向性魔法对它要么无法造成伤害,要么根本放不出来。我们可以重做这个技能,通过触发器来结算伤害。
要实现对魔法免疫单位释放属性伤害,必须选择一个破魔技能作为底材,比如死亡之指、诱捕(附带禁锢)、战争践踏(附带晕眩)、蛛网 等;否则像火球术这样的技能,根本无法对魔免单位释放。这里直接复制死亡一指技能,将其名称改为death(plus)
,然后图标和模型也进行相应更改:
注意: 技能的命令串是核心识别依据,即使技能名称/造型改变,只要命令串不变,电脑仍会正确执行对应技能逻辑。
4.1.2 伤害触发实现(死亡一指)
事件类型选择「任意单位开始释放技能」(下拉菜单里可选「开始释放」「停止释放」「发动技能效果」,这里「开始释放」和「发动技能效果」效果相同)。
动作部分的核心是「对目标造成伤害」,在「单位」分类里找到「伤害目标」指令(带不带R都行)。注意伤害目标是技能释放的目标单位,而不是事件响应单位,否则是造成自伤。伤害值不是固定数值,而是选择 数学-乘->英雄-属性->选择将力量值包含加成转为实数。「包括加成」即计算英雄当前的实际力量值,包含装备、buff等额外加成。
注意:触发器里除了「伤害目标」(对单个指定目标造成伤害),还有「伤害区域」(对技能释放范围内的所有单位造成伤害)。两者的数据编辑方式类似,但区域伤害无法区分敌我——如果范围内有己方单位甚至自己,也会受到伤害(容易误伤)。
4.1.3 技能拓展
- 破甲:将伤害计算与英雄的护甲穿透属性、技能等级关联,实现「属性越高,破防效果越强」。
- 邪恶狂热:把技能的基础伤害和持续时间 与英雄的某项属性(比如智力)绑定,实现「智力越高,持续伤害越强」。
- 资源关联技:把技能伤害与玩家当前的金币数量、木材储备关联(比如「每100金币提升10点伤害」),设计经济驱动的战斗系统。
4.2 漂浮文字(第46期,QQ群地图:魔法效果)
漂浮文字是指可以在指定单位或地点创建一段会逐渐上升并消失的文字,主要用于:
- 战斗反馈:显示技能/光环造成的伤害值、单位受到的伤害值、
- 资源/状态反馈:显示建造完成获得的资源、属性变化等。
漂浮文字虽能增强表现力,但不要滥用!如果所有事件(比如移动、攻击、状态变化)都添加漂浮文字,画面会显得杂乱无章,影响观感。
以第44期创建的死亡一指触发为例,在此基础上增加漂浮文字功能,一共有三个关键动作:
-
指定单位或点,创建漂浮文字
- 内容:使用
转换整数/实数为字符串
函数将数值显示出来。可以通过连接字符串
功能组合文字符号(如“金币+”)和数值。 - 颜色:可通过RGB百分比调节(比如橙色、红色等),也可用十六进制(HEX)代码(部分文本框需手动输入颜色代码实现变色效果);
- 文字大小与透明度
- 内容:使用
-
设置漂浮文字速率和方向:速率数值越大,文字移动越快(0表示静止);默认90度文字向上,270度向下。
-
计时器-删除飘浮文字:设置最后创建的漂浮文字 的生命周期,否则文字将永久存在。
注意:通过修改光环生命恢复为负值造成的伤害(生命流失),不会触发单位受到伤害事件(不知道凶手是谁),因此无法用漂浮文字捕捉。这种伤害也无法算作“击杀”。
类似还可以通过「任意单位伤害事件」做伤害统计,通过单位建造完成做资源提示:
4.3 N段技能模拟(第47期,QQ群地图:单体攻击)
本期做一个群星陨落类的单体技,命名为moonfire
。发动之后对敌方造成5次伤害(每次伤害值都为100),期间英雄可以脱手移动。
4.3.1 物编设置
使用霹雳闪电(中立敌对)作为技能模板,修改名称、说明、显示图标、射弹速度(1000->3000
),并添加魔法效果为群星坠落(目标)。这里坠落点应该是目标的脚边而不是头顶,所以设置目标附加点为origin
。持续时间指的是霹雳闪电附带的晕眩时间,将其改成一个很小的数值(如果调成0就是击晕时间无限),就基本没什么影响。
4.3.2 触发实现
- 创建并启动一个循环计时器(如周期为1秒)。
- 设置计时器参数(局部变量):这是实现多段伤害且不冲突的关键。
- 整数变量 (如
Times
):用于计数,控制循环次数。初始值设为0。 - 单位变量 (如
Target
):用于记录技能释放的目标单位。其值设置为(技能释放目标)
。
- 整数变量 (如
- 为计时器添加动作:计时器每次到期都会执行以下动作。
- 条件判断 (IF):检查计数变量是否已达到预设次数(如
Times
大于等于 4,则总共触发5次)。- 如果成立 (Then):
清除当前计时器
,结束循环。 - 如果不成立 (Else):执行以下N段伤害逻辑:
- 计数+1:将
Times
变量设置为 Times + 1
。 - 造成伤害:使用
单位 - 设置属性
动作,将Target
单位的生命值设置为(Target 的当前生命值) - 100
(固定伤害值)。 - 创建特效:在
Target
单位的脚下(附加点如foot
)创建“群星坠落”的特效,并设置其生命周期后自动删除。
- 计数+1:将
- 如果成立 (Then):
- 条件判断 (IF):检查计数变量是否已达到预设次数(如
4.4 位移技能(第49期 QQ群地图:单体攻击)
默认情况下,英雄技能栏只有5个空位,通常我们会按功能分配——1个大招(决战技能)、1个被动技能(可选)、1个输出技能、1个生存技能,1个位移技能。暴雪技能库中,伤害、恢复、保命技能比较丰富,但位移技能相对较少。因此,本期我们将重点讨论「位移」问题,包括传送门位移和触发器位移。
4.4.1 传送门位移
在物编器中立被动->对战->建筑中,可以找到传送门单位,它有一个传送的技能:
我们新建三个传送门和两个区域,然后双击编辑传送门属性(比如颜色),然后勾选“激活传送门”,右侧选择传送区域,就可以实现传送效果。比如图中两个红色传送门设置互相传送到对方区域,就可以实现两个传送门之间的互传效果(必须右键选中传送门才能激活传送效果,另外开启传送功能的传送门是顶部是发光的)。
4.4.2 触发器实现位移
将上一节做的moonfire
为基础,添加位移功能,也就是下图动作中添加的两行:
-
创建一个全局变量
location
(点类型),记录发动技能时英雄的位置; -
为玩家在此位置创建一个马甲
马甲单位以小精灵为模板,加蝗虫技能(无法被选中),去除使用科技效果,模型文件改为哨兵(猫头鹰) ,调整高度为90,移动速度为0。单位类型之前是工人,不采矿时会提示有闲置的单位,将其清空。将其生命回复改为-2,这样60秒后就会自然死亡(生命120),自然排泄掉。
-
使用嘲讽作为模板,制作一个名为
traceback
(回溯)的技能,技能图标是月亮石(符合泰兰德的身份)。
-
新建回溯触发,使用
traceback
技能后,英雄位移到之前的标记点位置。
如果使用了几次moonfire
技能,在地图上标记了好几处(马甲单位有视野,有侦查效果),使用traceback
一定是回溯到最后一个标记地点。
4.5 自定义投掷物(第50期 QQ群地图:技能幻想)
4.5.1物编设置
我们通过小精灵模板创建一个「马甲单位」来模拟投射物的飞行效果。以下是马甲单位的关键设置步骤:
- 添加技能:蝗虫(无法选中) + 无敌(中立);
- 碰撞体积:设为0(避免马甲单位与地图其他单位发生碰撞干扰);
- 模型文件:根据需求选择想要的投射物视觉效果,这里选飞蛇;
- 大小/高度:可调整模型大小和飞行高度(Z轴位置),比如让投射物在120左右的高度直线飞行;
- 单位类别:去掉「工人」类别(避免被系统提示“有闲置工人”);
- 生命周期:通过「负值恢复」控制最长存活时间(比如9-10秒后自动消失);
- 视野:设为0(不占视野,避免干扰玩家;若需提供视野功能可调整);
- 隐藏小地图显示:避免马甲单位在小地图上暴露轨迹。
4.5.2 触发实现(蓄力模拟- fireball)
- 创建马甲:给触发
fireball
技能的单位创建一个技能专用马甲(面向和英雄的朝向相同),并将其设为局部单位变量cast
; - 蓄力阶段:等待
1.5
秒,类似施法前摇。这里有一个bug,如果此时按S取消施法,英雄单位会停止施法动作,还可以走开,但fireball
技能还是会发射出去; - 运动控制:使用计时器(0.05秒周期),通过三角函数计算移动轨迹:X坐标 = 原X + 速度 × cos(角度);Y坐标 = 原Y + 速度 × sin(角度),一共循环50次,也就是在这2.5秒内,每0.05秒调整一次投掷物的坐标,最终50个位置点连成一条直线,模拟出直线投掷的效果。
- 清除:调整50次坐标后,删除技能马甲和计时器
4.5.3 伤害实现
要实现投掷物造成的伤害,可以通过给火球技能本身设置伤害参数(如初始伤害和每秒燃烧伤害),利用火球飞行过程中的持续攻击效果来达成,比用触发器配合矩形区域触发。另一种办法是使用之前创建的凤凰火焰技能来实现,将其命名为fireballdamage
:
- 射弹速度:设为3000,保证可以快速打到人;
- 影响区域:控制伤害范围宽度
- 施法间隔:设为0.01,保证投掷物飞行时可以攻击到范围内所有敌方单位;
- 燃烧时间:燃烧时间与每秒伤害相关联,若燃烧时间设置过短(如燃烧间隔为0.01秒),单位通过投掷物路径时(如仅1秒),燃烧效果可能触发上百次(如100次),导致运算量大幅增加,既没必要又影响性能。因此,通常建议将燃烧时间设置为至少3到5秒。
4.6 天灾系统(预警技能)(第51期 QQ群地图:单体攻击)
本期要实现的是在天灾区域中随机触发的预警技能机制——当单位进入指定区域时,系统会在随机位置生成一个视觉预警提示圈,经过一定延迟后,在该位置触发伤害与技能特效。该机制常用于实现陷阱或Boss的强力技能,主要由两部分组成:
- 提示圈马甲:用于显示危险区域的预警,带有无敌、无法选中等属性,确保不会被外界干扰(比如驱散、攻击)直到自然消失;
- 触发器逻辑:控制提示圈的生成、特效爆发、伤害施加及后续清理,实现「随机位置触发→预警→伤害」的完整流程。
4.6.1 物编设置
- 创建技能区域:使用「区域面板」创建一个名为「effect zone」的巨型区域,只有进入这个区域的单位才会触发天灾效果。区域可以是常驻生效,也可以通过其他触发条件(比如传送门激活)动态开启。
- 创建技能提示圈:提示圈本身不造成伤害,仅作为视觉预警。通过无敌和固定消失时间,保证它能稳定存在到触发伤害的时机。初始放置在需要预警的区域中心(后续通过触发器动态生成);
- 复制小精灵为模板制作提示圈马甲单位,模型选择红色提示圈。也可选择其他颜色,如绿色可表示恢复效果,可以搭配生命之树的宁静技能;
- 属性设置:移动速度设为0,添加「无敌」和「蝗虫」技能,确保提示圈不会被玩家选中,不会被意外消除。取消碰撞体积(避免产生意外交互)、隐藏小地图显示,清除单位类别;
- 生命回复值:设置为负值,确保一定时间(技能前摇时间)后自动消失;
4.6.2 触发实现
-
随机点生成 :在「effect zone」区域内随机选取一个点作为本次天灾爆发的中心位置(逆天-变量设置)。
-
创建提示圈马甲 :在随机生成的点上,创建一个「马甲单位」,用于显示技能预警圈。该马甲单位初始处于「等待状态」(倒计时1.5s),给玩家留出观察和躲避的时间。
-
特效与伤害触发
-
生成一个持续2秒的特效:在提示圈马甲的位置(即随机点),创建一个「爆炸特效」,比如绿色死亡火焰喷溅效果,增强视觉冲击力,这个特效在2秒后自动删除;
-
伤害施加:设置一个只执行一次的倒计时,在继续等待0.5秒后,选取随机点周围100半径范围内的所有单位(赋值为
loc_unit
),将其生命值强制设置为50%,模拟出明显的伤害效果;同时还附带一个伤害特效(目标身上的紫色喷射效果)
-
-
清理 :删除本次生成的随机点标记(避免内存积累),删除计时器(确保下一次触发会重新生成新的随机点和计时流程)。提示圈马甲因生命值归零会在设定时间后自动死亡,连带的技能光环效果也会消失,完成整个天灾周期。
-
循环机制(拓展):通过计时器每隔一段时间(比如0.5秒内完成所有操作)重复执行「随机点生成→提示圈创建→特效伤害→清理」的流程,实现持续的天灾效果。
实际开发时,提示圈的颜色(红/绿)、伤害类型(固定伤害/直接致死/附加晕眩效果等)、触发区域(固定/动态开关)均可根据地图需求调整 。
4.7 多重技能(第52期 QQ群地图:技能幻想)
本期我们将继续拓展触发器技能——通过 「多个马甲单位,多方向协同释放子技能」,制作出具有「多段释放」「大范围输出」的技能模型,实现类似「环形剑刃」「圆形爆炸」「扇形扩散」「范围减速」等视觉效果。这是一种经典的基础逻辑,也是大佬们制作高级特效技能(如复杂光影、范围爆炸等)的底层框架。整个实现的主体逻辑为:
- 触发启动:玩家释放英雄主技能(如「召唤剑刃」)时,开启多重释放逻辑;
- 马甲生成:通过「循环整数A」控制生成多个马甲单位(比如如12个水元素马甲),每个马甲按固定角度间隔均匀环形分布(第1个马甲角度=1×30°,第2个=2×30°,…第12个=12×30°,覆盖360°);
- 技能释放:每个马甲创建后,立即释放配置的「单位技能」(如召唤旋转水元素剑刃),通过马甲的朝向角度实现多方向技能发射(如12个剑刃呈环形扩散),并通过调整马甲的飞行高度、位置等参数优化视觉效果;
- 伤害实现:技能的实际伤害由马甲携带的「献祭技能」提供——献祭使周围一定范围内敌方收到持续灼烧伤害。通过修改献祭效果的伤害范围和机制(如持续流血代替火焰燃烧),匹配技能的视觉表现(模型改为剑刃割伤)与大范围输出需求。
4.7.1 物编设置
-
Summon Blade(英雄技能): 以召唤水元素为模板进行调整:设置「召唤数量」为0,不生成实体水元素,只作为触发入口。 设置技能等级为3级,影响距离200->400,从英雄身边稍远的位置生成效果 。
-
马甲单位(Common):以小精灵为模板创建一个普通的马甲单位Common(没有模型、碰撞体积、生命回复为负值等等)
-
Summon Blade(单位技能,召唤水元素): 在触发器🀄️,会根据主技能等级,为马甲(Common)创建同样等级的Summon Blade(单位)技能,该技能效果是召唤不同等级的「水元素」(实际是旋转剑刃)
-
水元素(单位,实际模型是剑刃):选用「水元素」而非常见的农民/小精灵为模板,也做了三个等级 ,模拟剑刃效果,同时具有献祭技能(造成伤害)
-
通用属性:
- 添加技能无敌(防止被干扰或提前消失)、蝗虫(飞行单位,不阻挡玩家移动);
- 浮空高度(调整到合适位置,避免地面遮挡);
- 移除主动攻击(避免马甲主动攻击影响目标)、清除人口占用 ;
- 缩小视野(减到400,减少不必要的视野占用)
-
等级适配: 随技能等级提升,马甲的「献祭伤害范围」和「剑刃大小」同步调整(例如高等级时剑刃旋转范围更大,对应的伤害区域也扩大);
-
-
永久的献祭(技能):对周围敌人持续造成伤害,每秒50点。魔法效果是永久的献祭。
-
永久的献祭(魔法效果): 为每个等级的马甲配置献祭技能,将模型从火焰特效改为持续流血伤害,确保伤害表现与「剑刃割伤」的视觉一致。
4.7.2 触发实现(核循环角度+多马甲协同、命令串)
通过触发器(技能测试文件夹)实现「根据技能等级生成多个马甲,并让它们朝不同方向释放子技能」,关键步骤如下:
-
事件触发:检测到单位释放「Summon Blade」技能事件
-
获取技能等级: 读取玩家当前使用的英雄技能等级,存入局部变量(整数类型)。
-
循环生成马甲:
- 使用「循环整数A」动作,设置循环次数为1-12(对应环形分布的12个方向,避免从0开始导致循环次数错误)。
- 每次循环生成一个马甲单位(水元素),位置与玩家英雄重叠(原地放置),但通过「面向角度」调整朝向:
- 角度计算公式:
循环整数A × 30°
(例如第1个马甲:1×30°=30°,第2个:2×30°=60°,…第12个:12×30°=360°),最终12个马甲均匀分布在360°环形上(类似钟表刻度)。 - 若要制作扇形技能,只需调整循环次数(如6个马甲)和角度范围(如0°-180°),逻辑类似。
-
马甲配置与技能释放:
- 为每个马甲添加「单位用的Summon Blade」技能,并设置为当前英雄技能对应的等级(例如英雄技能2级,则马甲也使用2级子技能)。
- 发布命令:让马甲执行「无目标」的子技能,由于马甲已调整好朝向,子技能释放的剑刃会沿对应方向旋转。
-
清理与排泄: 删除马甲单位(或随生命周期消失),避免单位残留;
许多自定义技能本质由游戏原有技能(如召唤水元素->「Summon Blade」)转换而来,其命令字符串不变。因此即使技能其它属性改变,只要使用相同的命令串,就能指挥游戏系统执行对应的技能效果,无需担心预设命令缺失问题。
关键点分析:
- 马甲单位:作为技能释放的载体(调整朝向、等级、生命周期);
- 触发器逻辑:通过循环控制数量与方向(角度计算),联动子技能释放;
- 分层技能体系:主技能(触发入口)、子技能(视觉冲击)、魔法效果(实际杀伤)
4.8 群体技能与引导技能(第53期 QQ群地图:技能幻想)
通过前面几期的学习,我们已经接触了多种技能模拟的关键要素,本期将这些要素串联应用:
- 计时器:控制技能释放频率(如引导技能的持续输出间隔);
- 循环整数(A/B):用于多方向/多单位循环(如环形剑刃的角度分布、群体技能的目标选取);
- 不可见马甲:作为技能释放的载体(隐藏单位,执行关键逻辑,如驱散马甲、伤害马甲);
- 可见马甲:提供视觉效果(如魔法吮吸的光环、投射物特效);
- 特效马甲:增强视觉表现(如旋转剑刃、喷射轨迹);
- 单位技能与英雄技能的等级联动:通过调整技能等级适配不同效果强度。
本期以英雄「卡尔」为载体,展示了两种技能改造效果:
- 群体驱散(群体技能):将原本的单体驱散技能改造成对释放点位周围多个单位生效的群体技能(类似“群体风暴之锤”“群体火球”);
- casting snow(引导技能):「冲击波」(单体技)被改造成需要引导的持续性狂喷技能(释放时人物无法移动,朝固定方向长时间输出)。
4.8.1 群体驱散
-
马甲:在 中立被动-对战 单位中使用「小精灵」为模板创建了一个马甲,模型文件无,其它属性修改如下:
-
驱散技能(马甲用):在人族-单位中,以驱散技能为模板,将属性 状态-英雄技能 改为
FALSE
,使得这个技能单位可用;修改施法消耗为0
(三个等级)。 -
触发器逻辑:对半径512范围内所有敌方单位做动作——创建施法马甲、添加并释放驱散技能,最后删除施法马甲。这里最好做个点排泄,将马甲生命回复设的更低,让其快速死亡(瞬发技能)。
-
拓展:如果要实现群体风暴之锤、群体火球、群体暗影突袭这样的技能,:马甲应出现在触发技能的单位(如英雄)自身位置,而非目标单位位置。当释放技能时,多个马甲从施法者身上生成,并同时对指定的目标单位释放技能(如锤子),从而在视觉上形成多个技能同时飞出的效果。
4.8.2 引导技能casting snow
-
马甲:在暗夜精灵-对战单位中使用「小精灵」为模板创建了一个持续施法效果马甲: 技能无敌、蝗虫、碰撞体积0,科技需求无、 显示-死亡时间0.1秒、显示-特殊效果无、移动-高度120,移动-最小高度120、状态-单位类别无,设置生命回复为负值,控制排泄(9秒自动死亡)。修改投射物模型为飞蛇,模型缩放为4:
-
冲击波技能:在中立敌对中,以冲击波技能(命令串是腐臭蜂群)为模板进行修改。改了下射弹速度、伤害,缩短了一点距离。
-
英雄触发技能castingskill:在人族-英雄中,选用一个指向性技能,如「魔法吮吸」(仅作为引导入口,实际无魔法吮吸效果);取消施法动作(避免移动冲突),通过释放时间模拟引导持续性。
-
触发器逻辑:
-
事件:捕捉「准备释放技能」状态(即进入引导的吟唱阶段),确保人物在引导期间原地不动(无法移动)。
-
关键数据存储:记录技能释放的起始点位(施法单位位置)和目标点(对单位或地面都行)。
-
特效马甲创建:在施法单位位置生成特效马甲,调整其角度为「触发单位当前角度+180°」(让投射物看起来向前喷射)。
-
计时器启动:
- 周期:设置较低值(如0.1秒),频率越高则技能释放越频繁(伤害越高);
- 次数:设定总释放次数(如100次),通过次数控制总持续时间(例如周期0.1秒×100次=10秒)。
-
循环释放:
- 每次计时器触发时,次数+1;
- 创建伤害马甲(或复用特效马甲),为其添加改造后的「冲击波」单位技能
- 发布命令使其朝指定方向释放技能。魔兽中,技能的命令串是其核心识别依据,即使技能名称/造型等属性改变,只要命令串不变,电脑仍会正确执行对应技能逻辑。
- 伤害马甲的投射物沿直线飞行,对路径上的单位造成持续性伤害(模拟引导技能的喷射轨迹)
-
终止条件:当释放次数达到设定值(如100次)时,停止计时器,引导结束。
4.8.3 总结
本期通过卡尔技能的改造实例,将前面几期介绍的「计时器控制频率」「循环整数实现多方向」「马甲承载逻辑」「特效增强表现」「技能等级适配」等核心技巧串联起来,完整展示了「群体技能」和「引导技能」的制作流程。 这些方法本质上是「基础模块的组合」——大家可以根据地图需求,灵活调整马甲类型、触发条件、技能参数和视觉效果,制作出更多样化的技能(如AOE爆炸、范围减速、战略引导技等)。
常见问题处理:
- 若技能无效果,优先检查触发器逻辑是否完整(如事件触发条件、目标选取范围、马甲技能是否正确赋予);
- 技能的命令串是关键,即使技能名称变化,命令串不变则逻辑依然有效;
- 调试时可从简单逻辑开始(如先实现单次释放),逐步叠加复杂功能(如循环、多单位)。
五、游戏系统
5.1 刷怪系统
5.1.1 技能刷怪(黑暗之门召唤,第32期)
本章节的主要思路,是使用战役英雄阿克蒙德的“黑暗之门”技能(位置:中立敌对→英雄技能)实现刷怪。此方式无需触发器、利用游戏内置机制实现刷怪的方法,非常适合初学者。
-
设置“黑暗之门”技能:“黑暗之门”效果是在目标点召唤一群单位,其关键属性有:
- 召唤单位类型:定义一个单位池(如虚无行者、达拉内尔守卫、巨魔牧师、兽族步兵等),技能会从中完全随机地选择单位召唤,比如全部召唤出一种单位;
- 数量范围:设置召唤单位的最小值和最大值,每次发动技能是召唤出随机数量的单位;
- 释放间隔:这是“刷怪频率”,决定技能冷却时间(如15秒);
- 魔法消耗:建议设为0,确保技能能无限次释放;
- 施法距离:决定触发刷怪的范围(如700)。
-
准备“刷怪点”单位:使用企鹅作为载体,并设置为 “中立敌对”,让它可以对玩家使用技能。
-
放置刷怪单位:将修改好的“黑暗之门”技能添加给这个“刷怪点”单位,再将其放置在地图上。
当玩家的英雄进入刷怪点单位的视野和施法范围内,单位的AI会自动对玩家释放“黑暗之门”技能,召唤出怪物。玩家离开再进入其范围,会再次触发召唤,实现“踩地雷式”的刷怪效果。此方式优缺点如下:
- 优点: 无需编写任何触发器,设置简单;完全由游戏AI自动管理,不会产生内存或单位泄漏问题,游戏不会变卡。
- 缺点:
- 不可控:刷怪开关不易控制(如果刷怪点单位被杀死,刷怪就停止了)。
- 依赖AI:刷怪点单位如果有其他攻击方式,可能不会优先使用召唤技能。
- 机制简单:依赖视野机制,不能精确控制刷怪节奏,也无法实现复杂的刷怪逻辑(如按波次、指定路径等)。
你还可以利用“马甲”或“伪装”单位来承载刷怪技能,并通过改变其模型来创造有趣的游戏情景。比如将技能持有者变成一个看似无害的物体,比如一座房子或一个泉水,并起一个有趣的名字(如“女生宿舍”)。当玩家英雄进入这个“伪装单位”的施法范围(如700码)时,它会自动施法,召唤出一群怪物(如“保安”或“宿管阿姨”),形成一种“靠近禁区就会惊动守卫”的戏剧性效果。
5.1.2 触发器刷怪(第42期)
在测试地图🀄️,右上角区域会固定刷出两个强盗,刷出之后单位会向地图下方攻击,所以底层逻辑分为两个关键部分,通过触发器实现:单位列队(生成)与单位行为控制(移动与攻击)。
注意事项:
- 循环频率:单位移动的触发间隔(1秒)需短于单位生成的间隔(5秒),确保新生成的单位能及时被移动,避免因区域被占导致堆积;否则不断累积会导致游戏卡顿。
- 避免单位异常行为:为生成的敌方单位(如强盗)移除可能影响行进的特殊技能(如“影盾”“钻地潜行”等导致单位停顿的技能),并关闭“允许逃跑”“允许睡眠”等选项,确保单位始终朝向目标移动并战斗。
- “忽视单位警戒点”:AI动作🀄️还有一个“忽视单位警戒点”,使用之后单位不会自动返回初始警戒区域,避免“想家”行为。
以上逻辑被简单封装到YDWE提供的“刷兵系统”工具里,一个动作即可快速生成兵线:
非直线行进:若需让单位沿折线(非直线)行进,可在路径中设置多个关键区域:
- 第一段:单位从起点区域(A)生成后,先移动至中间过渡区域(B)(通过触发器检测进入A区域的单位,并指令其攻击移动至B)。
- 第二段:单位到达B区域后,再指令其攻击移动至最终目标区域(C)。
5.2 魔法书实现天赋系统/装备萃取(第45期)
5.2.1 隐藏技能图标
打开物编器的技能栏,在特殊->物品中,可以找到魔法书,它本质上是一个技能容器,可以将多个技能(如光环、属性加成技能等)放入其中。当单位使用魔法书技能时,会打开一个次级界面,显示其中包含的所有技能图标,从而省出英雄的技能栏。
- 法术列表:添加到魔法书的技能列表,一般都是被动技能,比如光环类、属性加成类;
- 最大/最小法术数量:设置魔法书最多可以装多少技,上限是11个(技能栏是3×4,再去掉一个关闭按钮,最多可以装11个)。
通过触发器(如单位-获得物品事件)将这本魔法书技能添加到英雄身上。此时,英雄会获得魔法书内所有技能效果,但技能栏会多出一个魔法书图标。通过触发器禁用这本魔法书技能(动作为玩家 - 禁用技能),魔法书图标不再显示,但里面装载的技能仍然生效。通过这种方式,可以很容易的模拟出天赋系统。
5.2.2 优化物品栏(天赋系统装备萃取)
这种「魔法书+禁用」的用法,在早期常被用来隐藏技能图标。更进阶的用法是模拟“物品灵魂绑定”效果:把物品的增益效果提取出来,通过魔法书承载,禁用魔法书后既不占物品栏,也不占技能栏,但属性增益会永久附加到英雄身上。
比如当玩家合成了额跳墙(全属性+5),或者养蝶多(加防御),直接为玩家添加装有对应物品效果(技能)的魔法书,然后禁用就行。
这种用法可以模拟很多RPG游戏的经典机制:
- 装备套装:物品/装备效果永久绑定到英雄身上,模拟出更多的“隐形”装备位(如头盔、护甲等),让英雄突破6个物品栏的限制,获得更多属性成长;
- 萃取系统:类似暗黑破坏神系列,从装备中提取特定的词条(比如加攻击、加生命),直接附加到角色身上,而不是保留物品本身;- 天赋系统:RogueLike游戏常规套路,每次通关获得的词条(增益效果)会永远跟随角色,成为其独特的属性的一部分。
总结魔法书的两种核心用法:
- 隐藏技能图标:把不需要的技能放进魔法书,禁用后图标消失,释放按钮栏空间。
- 物品属性绑定:把物品的增益效果提取到魔法书里,禁用魔法书后既不占物品栏,也不占技能栏,但属性增益永久生效(类似灵魂绑定)。
5.3 工资系统(第56期)
「工资系统」是基于时间或游戏事件定期给玩家发资源(如金币、木头)的底层逻辑系统,作用是通过资源积累影响玩家策略。比如在对抗地图激励进攻(占领、拆除敌方建筑增加收入),经营类游戏可对比资源积累方案等。本期以3C对抗地图讲解其触发器实现逻辑。
-
基础实现:为每个玩家/联盟创建整数型变量记录资源累计值(如“好人金币”“坏人金币”);设置循环触发器定期(如每秒/每10秒)为对应玩家组增加预设固定值(如每秒+1金币)。初始值可自定义(例如DOTA1中初始值为1),实现基于时间的资源定时发放。开发者可根据需求调整(如末日生存类游戏可设置初始1000金币,后续每60秒发放一次)。
-
动态调控:通过绑定游戏事件(如拆塔)触发工资变量的变化。
-
示例:在3C地图中,为「好人联盟」设置了8个独立的高塔拆除事件(每个塔有唯一编号)。每拆除一个,工资变量按规则增加(如+1金币/秒)。不同塔可设置差异化收益,比如如普通塔+1金币,高级塔+5/+10金币
-
除简单的加减外,可通过乘法或倍数事件放大收益(例如推掉关键塔后工资翻10倍),或设置减益事件(己方塔被拆时减少工资)。这种设计能打破「防守大于进攻」的平衡瓶颈,激励玩家主动冲突(比如推塔越多,每秒收入越高,进一步推动进攻节奏)。
-
-
拓展玩法:
- 可视化:结合漂浮文字特效(如建筑被拆除时显示「+X金币」),增强经营类地图(如农场、城建)的反馈感;
- 科技升级:当工资累计值达到特定阈值(如累计100金币),自动为所有兵种解锁科技或提升属性;
- 敌方限制:推掉关键建筑(如科研站)后,强制关闭敌方未开启的升级项目(如永久禁用某技能),改变战局平衡;
- 占领机制:结合中立建筑占领逻辑(如单位进入建筑范围后变色判定占领),计算占领建筑的工资奖励,丰富资源获取途径。
本期工资系统的核心是通过「定时循环发放+事件动态调控」实现资源积累的灵活控制:
- 基础:用整数变量记录玩家/联盟资源量,通过循环触发器定期增加固定值;
- 进阶:绑定游戏事件(如拆塔、占领)调整发放速率,利用数学运算(加减乘除/倍数)强化策略冲突;
- 扩展:将工资值作为判定条件,触发科技升级、敌方限制等新事件,提升玩法深度。
5.4 AI逻辑
5.4.1 官方预设AI及其局限性(第23期)
许多地图制作者的一个常见误解是:认为游戏内的电脑AI具备基础的“实时战略游戏”通用智能,只要给它们单位、建筑和英雄,它们就能自动寻路、发展、进攻,但实际完全不是这样。 魔兽的电脑AI本质上是一系列预先写好的、高度特化的指令集(脚本)。暴雪为官方对战地图和战役关卡编写的AI,只认识并适应该模式下的单位、建筑、科技树和胜利条件。一旦脱离这个熟悉的环境,AI就会变得“不知所措”。
打开一个魔兽自带的最简单的1Vs1地图(2)BootyBay.w3m
的触发器,可以看到这个地图非常简单,没有复杂物品系统和高级英雄等级、技能,但仍有“对战初始化”触发器。该触发器在地图初始化后,加载了对战昼夜等多个对战游戏的设定。当你选择电脑的个数和难度后,游戏按照提前预设的AI脚本来运行。
在触发器中,可以选择游戏 - 启用对战AI
和游戏 - 启用战役AI
。
-
对战AI:这串指令告诉电脑:“请按照‘建造英雄祭坛’-‘训练英雄’-‘采集资源’-‘建造兵营’-‘生产特定兵种组合’-‘组织部队进攻’……”这套标准流程来行动。这套流程只对原版的四个种族及其标准单位有效。如果你的地图种族、建筑、单位完全不同,或者胜利条件不是摧毁所有建筑,那么启用对战AI要么无效,要么会导致电脑行为错乱(比如试图在你自定义的主城里建造英雄祭坛)。
-
战役AI:通常用于剧情战役中,控制特定英雄或部队进行脚本化的移动、防守或攻击,行为模式更线性。它也只适应战役中预设的关卡设计,无法通用到自定义地图中。
5.4.2 YDWE编辑器AI(第23期)
当你为地图创建了全新内容后,必须主动“教”电脑如何使用它们。YDWE等强大编辑器提供了相应的AI函数来解决这些问题。
-
AI - 技能绑定英雄
:当你制作了新的英雄或者技能时,电脑控制的英雄可能永远不会学习这些技能,需要使用此AI,将自定义技能与英雄关联起来,让AI知道这个英雄“拥有”这些技能。你还可以使用AI - 设置英雄技能学习顺序
动作,明确告诉电脑技能学习的优先级(例如先学技能1,然后技能2,最后技能3)。 -
AI - 自动释放技能
:对于一些制作的比较花哨的技能,电脑英雄虽然学习了,但在战斗中永远不主动使用。
比如通过触发器模拟的复杂技能,AI无法从其原始数据中识别出这是一个“范围眩晕技能”或“治疗技能”,因此不知道应该在何种战斗条件下(被包围、队友血量低等)使用它。使用AI - 设置技能自动释放
,为技能指定释放条件,这相当于为AI编写了一条新的战斗规则,例如:“当周围3个敌方单位时,自动释放技能A”。
制作一张能让电脑智能游玩的自定义地图,是一个 “内容创作”与“AI配置”并行的过程:
- 设计阶段:考虑“如果这个单位/英雄/技能交给电脑控制,它应该怎么表现?”
- 实现阶段:
- 第一步:完成单位、技能、触发器等核心内容的创建。
- 第二步(关键):专门为电脑玩家配置AI。这包括:
- 禁用或避免依赖官方对战/战役AI(除非你的地图是微改版的标准对战)。
- 为每个自定义英雄绑定技能并设置学习顺序。
- 为关键的自定义战斗技能设置自动释放条件。
- 可能还需要使用触发器来为电脑编写更高级的决策逻辑(如进攻波次、特定目标优先级等)。
基础战斗AI:游戏有一些基础的战斗逻辑,比如牛头被多个敌人包围时使用战争践踏、单位在血量低时逃跑等,这些规则不需要额外添加。所以我们设计完英雄之后,一定要考虑这个英雄他天生的AI能不能帮助他正确使用其拥有的技能。
5.4.3 给电脑AI选英雄(第54期)
自定义地图无对战地图的封装AI逻辑,需手动模拟。电脑AI常见问题:不会选英雄、无明确行为指引(如攻击目标、移动策略)、无技能学习/物品交互能力。在情节->队伍属性🀄️,可以看到测试地图有3个队伍,5个玩家位。
在本文2.1
章节中,做过酒馆选英雄的设定,玩家选完的英雄出生在地图左下角的1
号位,在5.1.2
章节兵线系统中,做了2号位(右上和左下两个点)。现在新建一个3
号点位,靠近地图上的怪物,方便测试电脑AI的行为。
首先,电脑是不会在酒馆选英雄 的,所以需要用触发器帮电脑自动选择一个英雄。这里使用的是单位池NewNeroPool
来实现。单位池本身就是一个可以存储单位的数组,可设置比重控制选中概率(下图触发🀄️,破日者是马甲单位,只是后来改了名字)。
给2号玩家位和3号玩家位都设置好选人逻辑之后,因为需要添加电脑,所以不是测试模式,而是直接在游戏中选择地图:
测试结果:
- 2号电脑:和玩家都出生在1号点位,没有靠近小怪,没有其它命令的情况下,静止不动;
- 3号电脑:
- 靠近小怪,自动开始攻击。但是不会捡掉落物,可以升级但不会学习和使用技能;
- 当玩家单位靠近时,转攻击目标,直接攻击玩家单位。所以电脑AI默认的攻击优先级,是玩家>其他电脑队伍>中立敌对。
- 电脑3死亡后复活逻辑和玩家复活逻辑完全一样(复制玩家1的触发改成玩家3).
5.4.4 实现电脑AI的战场功能(第55期)
很多地图制作者推荐用 「通魔技能」 自制技能——它是中立敌对英雄技能,本身无效果,所以能模拟各种释放效果(如范围释放、无目标释放),搭配触发器可做出多样技能。不过,我们一直没用通模技能,最大原因是电脑AI无法识别它。必须通过系统封装的AI函数(如AI技能绑定英雄、设置学习顺序、自动对应技能学习、自动释放技能等)才能让电脑英雄正确使用。
实际测试发现,这样封装AI占用资源巨大,因为需要自己实现技能释放策略,比如释放时机和概率等等,这会导致系统要持续检索英雄状态(如位置、是否被攻击、是否升级等),且容易出现BUG,行为也很生硬,包括佣兵系统这些也是一样的问题。如果用它做出了效果很好, 很满意的技能之后, 还要花大量的时间去研究如何让电脑英雄去识别和使用这个技能,会增加很多训练的时长。
本地图使用普通技能做底材来实现高级技能。这样做出的技能装配到电脑英雄身上时,其内置的战斗AI能根据技能原本的释放规则和时机自然释放,避免了复杂的AI适配训练。
-
电脑学习技能机制:
- 技能学习:给电脑单位一个固定的技能学习列表,让电脑英雄依次尝试学习所有职业的技能(即使部分技能不适用,如恶魔猎手无「毒素之弓」,系统会自动跳过,继续下一个技能)。因为这个机制,所以学习逻辑可复用于所有电脑玩家
- 技能释放:电脑AI会根据技能本身的释放规则(如冷却、时机)自然释放。
- 额外加持:初始给电脑一些物品进行补强(可自行设置,比如生命之书),确保其与玩家对抗时数值平衡(玩家会理解英雄是肉盾型还是输出型,成长更有针对性)。
-
物品使用:通过触发器在英雄升级时「空降物品」(直接创建并给予电脑英雄指定装备),简单粗暴。固定物品(简化操作)可扩展为「随机物品池」,增加地图随机性与测试趣味性。
-
自动攻击:当电脑复活之后,让它随机选择攻击上路、中路或者下路(随机整数0-2)
-
逃跑回城:当电脑英雄血量下降到40%,让其脱离战斗回城。如果血量恢复到95%,就再次随机去往一路继续战斗