Y3编辑器文档4:触发器1(界面及使用简介、变量作用域、入门案例)

news2025/2/27 11:13:48

文章目录

    • 一、触发器简介
      • 1.1 触发器界面
      • 1.2 ECA语句编辑及快捷键
      • 1.3 参数设置
      • 1.4 变量设置
      • 1.5 实体触发器
      • 1.6 触发器复用
    • 二、触发器的多层结构
      • 2.1 子触发器(在游戏内对新的事件进行注册)
      • 2.2 触发器变量作用域
    • 三、入门案例
      • 3.1 使用触发器实现瞬间移动
      • 3.2 收集碎片(使用变量进行计数)
      • 3.3 复合条件(if语句)
        • 3.3.1 地形设置
        • 3.3.2 编写能量灌注逻辑
        • 3.3.3 编写能量灌注后,实现传送逻辑
      • 3.4 循环(创建6个次元种子)
      • 3.5 数组
      • 3.6 计时器
      • 3.7 单位组和玩家组
        • 3.7.1 单位组
        • 3.7.2 玩家组
      • 3.8 技能设计
        • 3.8.1 地形设置
        • 3.8.2 触发编写
      • 3.9 运动器

  • Y3编辑器文档1:编辑器简介及菜单栏详解(文件、编辑、窗口、细节、调试)
  • Y3编辑器文档2:场景编辑(地形编辑、物件放置)
  • Y3编辑器文档3:物体编辑器
  • Y3编辑器教程4:触发器1(界面及使用简介、变量作用域、入门案例)

一、触发器简介

参考官方文档《触发器》

  触发器是Y3编辑器中实现游戏逻辑的核心组件,它通过“事件-条件-动作”(Event-Condition-Action,简称ECA)的模式来实现各种效果。

  • 事件(Event):触发器的导火索,当设定的事件发生时触发器才会执行。
  • 条件(Condition):触发执行必须满足的条件。
  • 动作(Action):触发执行的结果。
    在这里插入图片描述

1.1 触发器界面

  通过主界面顶部功能栏或使用快捷键F4可进入触发器。进入触发器窗口后,你可以添加或删除文件夹和触发器,并使用搜索功能快速找到你想找的触发器;还可以对选定的触发器进行以下操作: 复制, 剪切, 粘贴, 删除, 重命名, 禁用, 和转化成Lua代码。
在这里插入图片描述
右键单击触发器并选择禁用使其无效。单击启用以重新激活无效的触发器

在这里插入图片描述

  你可以在变量管理事件管理中提前写入常用的变量和事件,以便在游戏中随时调用,从而减少开发项目的记忆成本和后期维护成本。比如可以提前设置事件并添加事件中需要的参数,然后在触发器-自定义事件中进行调用。
在这里插入图片描述
在这里插入图片描述
  在主界面-编辑-通用设置-编辑设置中勾选“缩略图滚动条”,可以显示ECA缩略图滚动条。左键点击可以定位到想要的行数,长按左键可以拖动滚动条。错误、点选与搜索结果也会以色块形式显示到普通滚动条上。缩略图可以收起,收起后需要重新在“主界面-编辑-通用设置-编辑设置”打开。
在这里插入图片描述
在这里插入图片描述

1.2 ECA语句编辑及快捷键

  点击事件/条件/动作后面的"+"为当前部分新建语句,也可以在空白处点击鼠标右键,新建事件,条件,动作,子触发器与注释。如果想要更改已有的事件,条件或者动作,双击对应语句即可弹出选项窗口,选择新的内容后即可进行覆盖。

功能快捷键说明
新建触发器Ctrl + T
新生子触发器Ctrl + Q
新建事件Ctrl + E
新建条件Ctrl + D
新建动作Ctrl + R
新建注释Ctrl + N
ECA注释开关Ctrl + M将当前语句转为注释
设为无效Ctrl + W使触发器文件或eca条目无效(被跳过)
条目下移Ctrl + ↓快速将当前选中的eca下移一行
条目上移Ctrl + ↑快速将当前选中的eca上移一行
新建收纳盒Ctrl + P
添加至收纳盒Ctrl + O添加当前选中eca到收纳盒
变量引用查看A
全局元素引用查看S
跳转到函数D

在这里插入图片描述

功能快捷键说明
查看上一个触发器Ctrl + ←
查看下一个触发器Ctrl + →
搜索框Ctrl + F
跳转到物编器Ctrl + J
切换到触发器Ctrl + 1
切换到函数库Ctrl + 2
切换到触发总览Ctrl + 3
跳转F3
复制参数Shift + C右键单击参数使用。复制时,整个参数的值和类型都将被复制到剪贴板上
粘贴参数Shift + V右键单击参数使用,复制的参数类型与目标参数类型必须相同

在这里插入图片描述

1.3 参数设置

  未赋值的参数会以红色显示,已赋值的参数会以填入的数据类型分配颜色,可选的参数则在次级菜单中选用,额外的选项会以蓝色显示,文本信息说明了当前触发器语句的含义。需要指定所有的必选参数,本条动作以及所在的触发器才能正常运行。
在这里插入图片描述
参数有以下几种类型:

  • 预设对象:当参数类型为可以放置在场景中的对象时( 单位,装饰,物体,特效等),可以直接选择该预设对象作为参数。
    在这里插入图片描述
  • 数值:你可以直接将一个固定的数字、文本或布尔值赋给一个参数
  • 变量:包括全局变量和局部变量
  • 函数:一组官方打包的获取数据的动作,可以直接提供对应的返回值。
    在这里插入图片描述
  • 通用:用于设置 自定义值 和调用表格编辑器。
    在这里插入图片描述
      当您单击转换为变量时,会在当前语句之前创建一个变量赋值语句,将当前语句结果赋值给一个变量。转换为变量后,您可以单击取消变量转换以恢复到之前的状态。

在这里插入图片描述

1.4 变量设置

你可以通过触发器界面设置变量,或通过ECA选择界面设置变量。

在这里插入图片描述
变量在创建时,需要声明其类型,部分变量类型必须设置默认值。

  • 非对象型变量:字符串、浮点数、整数、布尔值
  • 对象型变量:单位、单位组、玩家组、单位命令

变量根据作用域类型分为全局变量和局部变量。

  • 全局变量:可以在本项目内的任何触发器中读取和写入。
  • 局部变量:只能在当前触发器中生效。

  数组是相同数据类型的集合,数组中的每个元素都在其基本值上添加了一个索引,使我们在数组中更容易找到和访问它们。整数、单位、实体、单位名字、物品实体等变量都可以设置为数组。比如下面代码设为按下H键之后,在Boss周围召唤6个黑暗守卫(使用数组guards实现)。

在这里插入图片描述

  变量只能用于储存数据的媒介,并不会实时更新,任何对变量的操作都需要使用赋值动作进行实现。请不要忘记在触发器中编写更新变量的语句。例如,在游戏运行的时候设置变量“玩家人数”为6,5分钟后有一位玩家退出游戏,此时游戏中玩家人数为5,如果没有编写变量更新语句,那么变量“玩家人数”依然为6。你需要编写能表达“在玩家退出游戏的时候玩家人数减1”的逻辑。

在这里插入图片描述

1.5 实体触发器

  在物体编辑器->触发器中可进行实体的逻辑编写,即为实体触发器,其优势在于它可以更简单地将逻辑和目标物体绑定,而与其他摆件无关,所以可以减少性能的消耗。实体触发器的编辑与上述触发器操作一致,一个摆件也可以设置多条触发。

1.6 触发器复用

  在触发器中选择想要复制的触发进行复制,这条触发器的源代码内容会写入到粘贴板中,此时可以在记事本等文本文件中进行本地粘贴保存,或者在新项目的触发器界面选择右键粘贴(Ctrl+V)。
在这里插入图片描述

二、触发器的多层结构

2.1 子触发器(在游戏内对新的事件进行注册)

  触发器具有一个事件,这个事件是通过一个注册来实现的,即对一个事件进行注册,从而让系统在对应的事件触发时能继续按照条件与动作顺序执行。全局触发器是在游戏初始化时就注册完成的,如果要在游戏内对新的事件进行注册,实现更复杂的游戏逻辑,就需要通过子触发器来实现。

  子触发器是在触发器的“动作”中创建的,用于在游戏进程中对新的事件进行注册,注册后会独立运行(按ECA的逻辑执行)。子触发器是一种变量类型,可以返回这个触发器实例,以方便在使用完毕后销毁它(如果需要的话)。因为是游戏进程中注册,所以我们可以把变量中的数据传递给子触发器进行注册。

下面是一个简单的示例,使用子触发器将单位(关羽)移动到相应的点。

在这里插入图片描述

2.2 触发器变量作用域

  作用域是指变量在程序中被定义后可以被访问的范围,它决定了变量的可见性和生命周期。全局变量可以在任何触发器及其子触发器的范围内有效,局部变量可以在当前触发器及其子触发器的范围内有效,子触发器局部变量只能在当前子触发器的范围内有效。作用域的存在可以防止变量命名冲突,提供封装和隔离性,提高程序的可靠性和可维护性。

  局部作用域中的变量优先级更高。比如在子触发器中定义了一个局部变量,这个变量与全局变量或者外部作用域中的变量(另外一个触发器中定义的变量)同名时,子触发器内部只能访问和修改这个局部变量,其余两个同名变量被隐藏,无法直接访问或修改。所以说,作用域机制提供了一定程度的隔离,可以防止子触发器意外修改外部变量,从而避免潜在的错误和不可预测的行为,保持代码的清晰和可维护性。

  根据作用域划分,触发器中的变量可以分为全局变量、函数局部变量、触发局部变量、子触发器局部变量和组变量。根据类型划分,可以分为对象型变量(如单位、单位组、玩家组、单位命令)和非对象型变量(如字符串、实数、整数、布尔值)。

  子触发器内部对于赋值运算(非单位类型局部变量的修改)只会在子触发器内部生效,不会影响外部;但是对对象型变量(如单位组、玩家组等)的操作以及对单位属性的修改会同步影响到外部。这种设计有助于在保持局部变量隔离性的同时,允许对共享资源进行必要的修改(单位对象是一个全局可访问的对象)。

  下面使用全局字符串、全局单位类型、局部字符串、局部单位类型;全局单位组、局部单位组这6个变量进行测试。

  1. 先打印每个类型的初始值

    [Info]: 全局字符串AAA
    [Info]: 全局单位类型UnitName:134219749张飞)
    [Info]: 局部字符串BBB
    [Info]: 局部单位类型UnitName:134274912(关羽)
    
    [Info]: 全局单位组中单位数量1
    [Info]: 局部单位组中单位数量1
    
  2. 通过子触发器修改这4个变量的值并打印
    在这里插入图片描述
    在这里插入图片描述

    [Info]: 全局字符串CCC
    [Info]: 全局单位类型UnitName:134220068(大乔)
    [Info]: 局部字符串DDD
    [Info]: 局部单位类型UnitName:134257382(小乔)
    
    [Info]: 全局单位组中单位数量2
    [Info]: 局部单位组中单位数量2
    
  3. 通过其他子触发器再次打印变量的值:

    [Info): 全局字符串CCC
    [Info): 全局单位类型UnitName:134220068(大乔)
    [Info]: 局部字符串BBB
    [Info): 局部单位类型UnitName:134274912(关羽)
    
    [Info]: 全局单位组中单位数量2
    [Info]: 局部单位组中单位数量2
    

三、入门案例

本章节整合官方文档《触发器的多层结构》和官网课程《触发器1》的内容。

3.1 使用触发器实现瞬间移动

参考视频《什么是ECA》

  1. 地形设置:在地图上放置一个单位,在传送阵处绘制圆形区域,在希望角色被传送到的地方绘制一个点。点和区域在编辑器里是可见的,但在游戏中会处于隐藏状态。

  2. 触发编写

    • 新建事件(Ctrl+E):当任意单位进入圆形区域时触发,所以选择单位->任意单位区域事件。区域行为选择进入,区域选择刚刚绘制的圆形区域。

    • 新建条件(Ctrl+D):只有神秘人进入才会触发动作。设置单位->单位类型-判断,触发选择单位类型->函数->获取单位类型,判断符选择等号,第二个字段选择自定义的神秘人

    • 新建动作(Ctrl+R):神秘人移动至点P1。

      • 移动命令:选择单位->强制移动动作,选择单位->函数->获取事件中的单位,坐标选择刚刚创建的点。
      • 发布停止命令:不设置的话单位瞬移后会立马跑回去。选择单位->发布命令->停止
      • 相机跟随单位:为了增加玩家视觉体验,设置镜头->第三人称跟随单位。玩家选择玩家1,镜头焦点选择跟随事件中的单位。

在这里插入图片描述

3.2 收集碎片(使用变量进行计数)

  游戏中,探险者收集六个次元石块并修复传送阵,这需要通过设置一个整数变量来记录探险者收集的石块数量。

在这里插入图片描述

  1. 地形设置:打开物体编辑器,创建一个新的物品(石块),并设置模型和图标。在表现页面,可以预先设置石块大小,提前调整。最后在地图上放置六个石块。

  2. 触发编写:触发的核心,是需要设置一个整数变量去记录探险者收集的石块数量。

    • 创建事件:创建一个新的触发器,设置事件为物品->单位获得事件
    • 创建动作:选择基础->变量-设置变量->全局变量(可重命名为number,类型选整数)来记录石块数量,初始值为0。
    • 实现累加逻辑:每次探险者获得石块时,变量number增加1。所以设置第二个参数整数->整数间数学运算。第一个变量为number,运算符为+,第二个变量设为1,这样每获得一个石块,数量就累加1。
    • 存储石块数:为了增加用户体验,创建一个字符串变量来存储和显示累计拾取的数量并展示。选择变量->设置变量->局部变量(字符串类型,可命名为message)。设置为字符串->字符串拼接。第一个字符串为“累计拾取数为:”,第二个为number。由于整型要转为字符串类型才能拼接,选择字符串->任意变量转为字符串,选择待转换的变量为整数->全局变量->number
    • 展示消息:选择界面->系统消息提示,选择向玩家1显示message信息,持续时间可自己调整。

在这里插入图片描述

3.3 复合条件(if语句)

  if流程语句的结构如下,条件可以是取反(not语句)、所有条件成立(and语句)、任意条件成立(or语句)或者所有条件不成立。
在这里插入图片描述
下面用if语句实现探险者进入能量泉区域完成自动充能,然后才激活传送阵的效果。

3.3.1 地形设置
  • 在物体编辑器中新建两个自定义装饰物(能量圈和传送门)和一个自定义单位(探险者)放置在地图上。
  • 在能量圈和传送门的位置各绘制一个圆形区域,并分别重命名为能量圈区域和传送门区域。
  • 在希望被传送到的位置绘制一个点,重命名为point。
  • 新建能量获取魔法效果:选择魔法效果->创建->普通->右上角获得特效列表下选择一个蓝色护盾buff特效。选择左上 模型编辑器-模型,可以查看在不同单位模型效果。单机特效标签,弹出的窗口中还可以对效果进行旋转和缩放,以及选择挂接点。
    在这里插入图片描述

在这里插入图片描述

3.3.2 编写能量灌注逻辑

需要新增一个全局变量infusion来判断探险者是否进入能量泉进行了能量灌注,类型为布尔值。

  • 创建事件:选择单位任意单位进入区域(魔法区域)
  • 创建注入动作:选择基础->设置变量,新建全局变量重命名为infusion,类型为布尔值,默认为False。进一步设置变量infusionTrue,表示单位进入能量泉后,能量注入成功,infusion应为True
    在这里插入图片描述
  • 创建魔法效果动作:选择魔法效果->添加魔法效果。第一个参数魔法效果类型,选择刚刚自定义的获得能量护盾效果(蓝色护盾buff)。第二个参数单位选择探险者。
    在这里插入图片描述
3.3.3 编写能量灌注后,实现传送逻辑

  如果条件满足(探险者已能量灌注),则执行if b动作列表,将探险者瞬移到点point并发布停止命令。如果条件不满足,则执行else动作列表,提示传送失败。新建一个触发器:

  • 创建事件:单位->任意单位进入区域
  • 创建动作:基础->条件IF/THEN/ELSE,旁边的+号点击后选择基础->布尔值判断,判断条件为infusion=True
  • 创建Then语句:探险者瞬移到point,然后发布停止命令
  • 创建Else语句:选择界面->系统消息提示,参数分别选择玩家1和“传送失败”。

在这里插入图片描述

3.4 循环(创建6个次元种子)

参考《触发器2:循环》

循环是指重复执行某项动作。在Y3编辑器中,循环有三种类型:

  1. 指定次数或指定整数变量重复执行:这是最常用的循环触发方式,例如,设定NPC敲门三次,动作会重复三次后自动停止。

  2. 条件成立,重复执行:在条件满足的情况下,进行无限次的循环,直到条件不再满足。例如,如果条件是门关着就敲门,那么敲门动作会一直重复,直到门开了才会停止。

  3. 遍历数组变量循环:根据数组的索引数字,对数组中的每个单位重复执行动作。例如,有一个不同门的列表,NPC会按照顺序敲门,直到所有门都被敲过。

在这里插入图片描述

本章节将使用第一种循环实现在BOSS周围出现6个次元种子的效果。
在这里插入图片描述

  1. 地形设置
    自定义创建黑袍男单位并重命名为boss,自定义特效种子(投射物)重命名为Seed。将boss单位放置在地图上,并以boss为中心绘制一个圆形区域,重命名为alert_area
  2. 触发编写
    • 创建事件:选择单位->任意单位区域事件,设置参数为任意单位进入alert area(任意单位包括boos啊,得指定玩家才行,非boss都不行)。
    • 创建动作
      • 创建一个变量循环,Seed number变量类型为整数,从1到6做动作表示循环六次,创建六个种子。变量Seed number存储当前循环的整数数字。
      • 创建一个角度变量angle,使用函数->数学运算->角度运算,选择已创建的整数变量Seed number,乘以60,得到从60度到360度的六个平均分布的方向,确保投射物出现在boss周围。
        在这里插入图片描述
    • 创建一个点变量loc(点类型),用来记录种子出现的点。选择函数->路径-点向方向偏移,初始点为boss所在点,方向为变量angle,偏移距离设置为300
    • 添加动作为boss创建种子。选择投射物,创建投射物seed,位置为变量loc,可选参数中选择持续时间为5秒。

在这里插入图片描述

  创建次元种子投射物时,我选择了挂接模型,结果发动技能的时候连模型生物也召唤出来了。要清除挂接模型,需要鼠标右键单击,选择清空。

3.5 数组

  数组是相同数据类型的集合,数组中的每个元素都在其基本值上添加了一个索引,使我们在数组中更容易找到和访问它们。整数、单位、实体、单位名字、物品实体等变量都可以设置为数组。

  下面使用数组实现一次创建6个黑暗守卫,一起进攻探险者的游戏效果。地形上我们复用上一节的地形。

在这里插入图片描述

触发编写为:

  • 创建事件:键盘按键H按下(硬件输入->键盘-按下->H)。
  • 创建动作
    • 设置一个局部变量guards,类型为单位类型(不是单位),这里要勾选数组。分别设置1~6对应我们需要的六个黑暗守卫单位(类似语句可以直接复制粘贴,还是太不优雅了)。
    • 利用上节课学习到的循环,创建一个变量循环numGuard,从1~6循环。
    • 我们同样需要创建变量angleGuardlocGuard,来存储黑暗守卫出现的方向和位置。
    • 添加动作为boss在locGuard创建guards,数组变量guards的索引为变量numGuard

在这里插入图片描述

3.6 计时器

  计时器就好比一个沙漏,在计时结束后开始执行某项动作。我们可以用计时器来处理和时间有关的游戏逻辑。在编辑器中,计时器一共有三种:

  1. 运行单次计时器:计时器运行一次后开始执行动作。例如,倒数三秒后约翰的门就会打开。
  2. 运行循环计时器:计时器循环运行,每次运行后都会执行动作。例如,每隔一秒约翰的门就会打开一次。
  3. 运行固定次数的计时器:计时器中间停留固定时间,固定次数的计时器。例如,每隔一秒约翰的门就会打开一次,一共打开三次。

在这里插入图片描述
  下面是《触发器:计时器》中,使用计时器实现次元入侵者每隔2s在“裂缝”处爬出的效果。

在这里插入图片描述

  1. 地形设置
    • 在地图上绘制一个点(区域->点),重命名为“裂缝”。
    • 打开物体编辑器->生物,自定义次元入侵者。头顶无显示,血条样式无血条,取消勾选是否有技能资源条,取消勾选是否在小地图显示,修改攻击范围为10。
      在这里插入图片描述
  2. 触发编写
    • 创建事件:键盘按键J按下事件。
    • 创建动作
      • 选择循环计时器,每两秒循环一次。通过设置语句中的布尔值参数,我们可以选择“立即执行”或者选择“等待两秒后再执行第一次动作”。我们在这里选择true,即立即执行。
      • 动作列表中,创建你想要生成的单位,在刚才绘制的点“裂缝”处创建,面向角度跟boss一样。

在这里插入图片描述

注意:你可以选择True并立即执行动作,或者选择False在2秒后执行第一个动作。

3.7 单位组和玩家组

3.7.1 单位组

在这里插入图片描述

  单位组是由一个或多个单位组成的集合,在单位组中,我们能同时对所有的单位或选择某些单位发布命令。合理利用单位组,我们可以在游戏制作中节省大量的时间。下面是在《触发器:单位组》中,使用单位组实现主人公发送特技“次元入侵”,入侵者瞬间死伤殆尽的效果。

  1. 地形设置:在地图上放置一些自定义的次元入侵者和一名次元统领,设置他们的单位所属为中立-敌对,再将我们的主角探险者放置在地图上。
  2. 触发编写
    • 创建事件:硬件输入键盘按键按下,选择按下K键。
    • 创建动作
      • 设定一个局部变量,变量名invaders_Group,类型为单位组,我们将次元入侵者设为单位组中的指定单位类型(函数->单位组->指定类型的单位->次元入侵者)。
      • 选择单位组invaders_Group,遍历其中的单位,在动作列表中添加单位->杀死单位。第一个参数选择“获取单位组中遍历到的单位”,凶手为“探险者”。现在单位组invaders_Group中的所有单位将被一起杀死。

在这里插入图片描述

  如果对单位组中遍历到的所有单位做动作,新建动作的语句顺序不对,和单位组遍历语句同级,也就是不小心变成了在单位组外进行新建动作,此时**”获取单位组中遍历到的单位“**是不会出现的

3.7.2 玩家组

  玩家组是一个包含一个或多个玩家的集合。您可以直接对玩家组中的所有玩家执行操作。

在这里插入图片描述
  例如,下面的语句表示在点A创建一个关羽单位,并将该单位分配给玩家组BB中的每个玩家,单位面向180°角度。
在这里插入图片描述
特效默认为全玩家可见,可通过ECA控制特效可见性。

  • 通过“玩家”列表操作,实现对某个玩家的特效显示/屏蔽
  • 通过“玩家组”列表操作,实现对某个玩家组的特效显示/屏蔽,比如某玩家的所有同盟玩家,某玩家的所有敌对玩家等等

在这里插入图片描述

3.8 技能设计

技能的释放简单来说,有三个关键点:

  • 施法开始:在施法开始节点后会播放单位的施法动作,比如魔法师抬起魔杖
  • 施法引导:施法过程的开始,例如魔法师开始念咒语
  • 施法结束:咒语念完的时间点,在这个关键点之后,部分人物会有结束动作。

下面实现探险者在选中位置召唤一个巨雷,对区域内所有敌人造成伤害的效果。
在这里插入图片描述

3.8.1 地形设置
  • 在地图上放置中立-敌对的野怪单位,以及主角探险者。

  • 新建自定义技能命名为雷击,并添加说明“探险者在选中位置召唤一个巨雷,对区域内所有敌人造成伤害”。在右侧固定属性基础中保留是否转身,勾选超出范围、立即释放,其他全部取消。选择圆形指示器,设置技能范围为300。
    在这里插入图片描述

  • 新建自定义的雷电投射物,作为技能的施法效果(新建投射物->表现页签->右侧属性栏-特效配置选择闪电特效)。

  • 在物编器中给探险者添加雷电技能作为其通用技能。

在这里插入图片描述

3.8.2 触发编写

此技能有两个阶段:

  • 施法开始到施法引导阶段:播放施放技能的动作
  • 施法引导到施法结束阶段:创建施法效果的投射物表示产生技能效果,识别技能范围内的所有单位,对其中的敌对单位造成群体伤害并显示伤害数据。
    在这里插入图片描述

在工具栏-技能中,也可以编辑触发器,它会编写技能触发的具体过程。整个逻辑实现过程为:

  • 技能物编器中新建触发器,重命名为stage1
    • 创建施法开始事件:选择技能->施法开始
    • 创建施法动画播放动作:单位->动画->播放动画,参数“单位”选择“函数->技能拥有者”,参数“播放动画字符串”选择“值->attack1”(单位内置动画名称),参数“速率”设为1,即正常播放速度。从0秒播放到-1秒(表示动画播放到最后)。
  • 技能物编器中新建触发器,重命名为stage2
    • 创建施法引导事件:选择技能->施法引导
    • 创建动作1——投射物动作(施法):选择投射物->投射物-在点创建,参数“投射物类型”选择刚刚自定义技能“雷电”,参数“点”选择“函数->技能(当前技能)获取到点”,参数“所属”选技能拥有者。在可选参数中选择持续时间为3秒。
    • 创建动作2:——筛选单位组:新建动作,设置单位组->函数->筛选范围内所有单位,以技能选取点为圆心半径300内的所有单位做动作。
    • 创建动作3——对敌人造成技能伤害:新建if条件动作->如果所有条件成立
      • 创建if条件: 在if条件中选择单位->是敌对关系,两个参数分别选择“获取单位组中遍历到的单位”和“技能拥有者”。
      • 创建Then动作:选择单位->造成伤害。对遍历单元组中的单位造成500点法术伤害,伤害所属设置为技能拥有者,所属当前技能。
      • else代表同盟或者友方单位,不需要做任何动作。

在这里插入图片描述

技能默认消耗MP,而生物和建筑单位默认是没有MP的,装备了主动技也使用不了。

3.9 运动器

  运动器可以为单位或者特效等添加运动效果,比如沿着直线运动或追踪某一个单位等,是制作技能、特效等场景中十分常用的功能。

  在Y3编辑器中,运动器分为追踪运动器、曲线运动器、直线运动器、环绕运动器(对单位)、环绕运动器(对点)

在这里插入图片描述
您可以设置运动器的方向、距离、初始速度和加速度,以及一些可选参数。

在这里插入图片描述
下面是《触发器:运动器》中,使用环绕运动器(对单位),实现电球的环绕和爆炸效果。

在这里插入图片描述

  1. 触发组件设置
    • 在物编器中创建一个自定义投射物"Electric ball"(球形蓝色电流攻击)作为环绕的球体,设置缩放0.4倍大小,勾选循环播放,让特效一直播放。
    • 设置自定义投射物"Explosion"(蓝色电流冲击波,0.3倍缩放)作为结束时的爆炸效果。
    • 在主界面地图上放置一个英雄单位作为主角
  2. 触发编写
    • 新建事件:硬件输入->键盘按下A
    • 新建电球投射物:创建一个投射物变量"Electric ball",投射物类型选择预设的投射物"Electric ball",选择在点创建,创建的位置点,选择探险者所在的点。
    • 新建运动器:选择运动器->环绕运动器对单位,两个参数分别设为变量"Electric ball"和探险者,环绕半径为200,角速度为100。在可选参数中,添加环绕时间5s和环绕高度100
    • 新建投射物爆破动作:在运动完成动作列表下添加动作,在探险者所在的点创建投射物"Explosion",持续时间1s
    • 优化游戏内存:销毁投射物"Electric ball"并移除运动器(为单位移除运动器,单位选择探险者)。

在这里插入图片描述

  如果不移除Electric ball,则5s后只是停止环绕,这个投射物还在。如果写了同时移除Explosion,则这个爆炸效果不会触发,而且这里只有一个电球在环绕。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2261280.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【DBeaver】连接带kerberos的hive[Apache|HDP]

目录 一、安装配置Kerberos客户端环境 1.1 安装Kerberos客户端 1.2 环境配置 二、基于Cloudera驱动创建连接 三、基于Hive原生驱动创建连接 一、安装配置Kerberos客户端环境 1.1 安装Kerberos客户端 在Kerberos官网下载,地址如下:https://web.mit.edu/kerberos…

bug:uniapp运行到微信开发者工具 白屏 页面空白

1、没有报错信息 2、预览和真机调试都能正常显示,说明代码没错 3、微信开发者工具版本已经是win7能装的最高版本了,1.05版 链接 不打算回滚旧版本 4、解决:最后改调试基础库为2.25.4解决了,使用更高版本的都会报错,所…

【前端】JavaScript自定义 forEach方法详解与原理分析

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: 前端 文章目录 💯前言💯题目演示与效果演示代码控制台输出结果 💯代码分析与源理解释1. 构造函数 Brray2. 实例化 Brray3. 调用自定义的 forEach 💯比较与拓展1. 比较原…

基于卷积神经网络的Caser算法

将一段交互序列嵌入到一个以时间为纵轴的平面空间中形成“一张图”后,基于卷积序列嵌入的推荐(Caser)算法利用多个不同大小的卷积滤波器,来捕捉序列中物品间的点级(point-level)、联合的(union-…

挑战一个月基本掌握C++(第三天)了解注释、数据类型、变量

一 C注释 程序的注释是解释性语句,您可以在 C 代码中包含注释,这将提高源代码的可读性。所有的编程语言都允许某种形式的注释。 C 支持单行注释和多行注释。注释中的所有字符会被 C 编译器忽略。 C 注释一般有两种: // - 一般用于单行注释…

211-基于FMC的1路1.5G ADC 1路 2.5G DAC子卡

一、板卡概述 FMC-1AD-1DA-1SYNC是我司自主研发的一款1路1G AD采集、1路2.5G DA回放的FMC、1路AD同步信号子卡。板卡采用标准FMC子卡架构,可方便地与其他FMC板卡实现高速互联,可广泛用于高频模拟信号采集等领域。 二、功能介绍 2.1 原理框图 2.2 硬件…

Cloudlog 电台日志系统 request_form SQL注入漏洞复现

0x01 产品简介 Cloudlog 是一个自托管的 PHP 应用程序,可让您在任何地方记录您的业余无线电联系人。使用PHP和MySQL构建的基于Web的业余无线电记录应用程序支持从HF到微波的一般站记录任务。 0x02 漏洞概述 Cloudlog request_form 接口存在未授权SQL注入漏洞,未经身份验证…

Jenkins容器使用宿主机Docker(五)

DevOps之安装和配置 Jenkins (一) DevOps 之 CI/CD入门操作 (二) Sonar Qube介绍和安装(三) Harbor镜像仓库介绍&安装 (四) Jenkins容器使用宿主机Docker(五) Jenkins流水线初体验(六&#…

【大模型】LLaMA-2:Open Foundation and Fine-Tuned Chat Models, July. 2023.

论文:LLaMA-2:Open Foundation and Fine-Tuned Chat Models, July. 2023. 链接:https://arxiv.org/abs/2307.09288 Introduction 创新点 7B - 70B 预训练 微调 开源Llama 2 和Llama 2-Chat,针对对话用例进行了优化Motivation A…

Jmeter直连数据库,jar包下载

运行报错信息:jmeter连接mysql异常:Cannot load JDBC driver class ‘com.mysql.jdbc.Driver‘ 1、下载地址: https://mvnrepository.com/artifact/mysql/mysql-connector-java/ 2、将下载好的jar包 (我的是:mysql-con…

安全攻击平台介绍

目录 XSS攻击平台 Attack API BeEF XSS-Proxy 漏洞平台 cnvd 阿里云漏洞库 攻防演练平台 XCTF 攻防平台 零日靶场(0ops) 安恒靶场(赛宁安全) XSS攻击平台 XSS Payload如此强大,为了使用方便,有安…

webpack处理图片资源

过去在Webpack4时,我们处理图片资源通过file-loader和url-loader进行处理。 现在Webpack5已经将两个Loader功能内置到Webpack里了,我们只需要简单配置即可处理图片资源。 1. 配置 //webpack.config.js const path require("path");module.…

QT数据库(四):QSqlRelationalTableModel 类

关系数据库概念 例如下列departments、majors、studInfo 这 3 个数据表之间存在关系。 主键与外键 标记“**”的是主键字段,标记“*”的是外键字段。主键字段是一个数据表中表示记录唯一性的字段,例如 studInfo 数据表中的 studID 字段。外键字段是与其…

深入C语言文件操作:从库函数到系统调用

引言 文件操作是编程中不可或缺的一部分,尤其在C语言中,文件操作不仅是处理数据的基本手段,也是连接程序与外部世界的重要桥梁。C语言提供了丰富的库函数来处理文件,如 fopen、fclose、fread、fwrite 等。然而,这些库…

【HarmonyOS NEXT】ArkTs数据类型解析与使用

1. 背景 为什么设计ArkTS? 1.1 其它语言有版权【Java?Kotlin?】以及历史问题【Java内存?】 1.2 生态,可复用前端生态的三方库,兼容JS/TS语言生态ArkTs解决了JS/TS中的哪些问题? 2.1 **程序健壮性…

H5 scss 移动端的样式适配

在移动端样式的scss文件中,出现了这些变量 env() 与 constant() 设置安全区域,是css里IOS11新增的属性,webkit的css函数,用于设定安全区域与边界的距离,有4个预定义变量: safe-area-inset-left: 安全区域距…

YOLOv5与ViT目标检测中的热力图应用教程

文章目录 前言一、热力图介绍1、热力图应用说明2、热力图代码整体思路3、实验效果二、heatmap类解读三、GradCAM、GradCAMPlusPlus, GradCAM, XGradCAM, EigenCAM, HiResCAM, LayerCAM等类源码解读1、GradCAM类源码2、BaseCAM类源码解读1、BaseCAM源码2、forward函数源码解读ou…

组织病理学图像的再识别|文献速递-生成式模型与transformer在医学影像中的应用

Title 题目 Re-identification from histopathology images 组织病理学图像的再识别 01 文献速递介绍 在光学显微镜下评估苏木精和伊红(H&E)染色切片是肿瘤病理诊断的标准程序。随着全切片扫描仪的出现,能够将玻璃切片数字化为所谓的…

如何用重构解锁高效 Vue 开发之路

文章目录 摘要引言什么是代码重构为什么要减少重复逻辑Vue 示例代码问题场景初始代码的痛点重构后的通用组件 TaskList.vue详细说明 重用通用组件详细说明 模拟数据与运行结果 QA环节总结参考资料 摘要 代码重构是改善代码质量的重要手段,特别是在减少重复逻辑方面…