Skip to content

运动器 ​

运动器能够赋予组件在运行时移动位置、旋转角度、变化大小的能力,让组件“动起来”。

你可以使用运动器制作丰富的动态表现和运动机关。

运动器的创建 ​

运动器支持以下创建方式:

  1. 组件高级设置-物理-运动器列表中直接创建
  2. 使用蛋码<添加直线运动器>和<添加圆周运动器>动态创建
  3. 复制组件时会继承原组件上的运动器列表
  4. 通过运动器左侧齿轮复制单个触发器或在运动器列表中点击全部复制粘贴到目标组件上
  5. 组件实体上的运动器可以同步到组件预设上,使用该预设创建的实体会继承运动器
  6. 使用携带运动器的组件作为创生模版,创生器创建的组件会继承运动器

注意事项

蛋码创建的运动器创建的是简化版本,仅支持固定循环不返程的运动模式,无初始延时和事件触发设定。

运动器通用设定 ​

  • 组件运动时,物理碰撞的位置和大小也会变化;
  • 组件运动时,绑定在该组件上的非受外力子组件也会跟随运动;
  • 同一组件上可以同时运行多个运动器。

性能警告

  1. 过多的运动器会影响地图文件大小,当地图文件大小超出上传范围时,可以尝试精简使用的运动器数量。
  2. 同屏组件同时运行多个运动器会造成游玩卡顿;
  3. 与组件距离过远时,运动器的表现效果会受到性能优化影响。

运动方式 ​

一个运动器主要由运动方式和位移方向、速度、时间组成。

运动方式是一个运动器最基本的属性,运动方式决定了运动器的运行模式。

沿路径运动 ​

物体依次经过预设路点,自动计算不同路点间的位置、角度、缩放变化过程

路点可以理解为我们希望组件移动到的目标位置。

使用例子:轨道小车,小树变大树

沿路径运动

沿路径运动支持可视化编辑运动路径:

  1. 在运动器配置界面底部选择添加路点即可创建一个组件虚体作为路点;
  2. 对路点进行移动、旋转、缩放操作,并配置路点下方的阶段变化时间;
  3. 在运动器配置界面右下角选择运动预览,系统会自动计算组件到目标位置的移动路径,在这里可以预览效果;
  4. 如果觉得动作轨迹不符合预期,可以点击路点左侧的齿轮使用插入路点细化运动轨迹。
参数 描述
相对空间 设置为局部空间时,组件旋转会影响沿路径运动的方向
使运动开启的事件 组件接收到该事件时会触发运动开始
使运动暂停的事件 组件接收到该事件时会触发运动暂停
重复创建运动器 打开时每次通过事件激活该运动器时,会销毁上一次的运动器运行进程,重新创建一个新的进程。适合需要在事件触发时从头开始运动、且每次运动的起始状态可能不同的场景。
关闭时运动器保持不销毁,事件激活时仅执行暂停/恢复操作,会继续使用同一个运动器继续运动。适合只需要暂停/恢复的简单开关控制场景。
路径样式 设置为直线时,运动器会在路点间直线运动;
设置为曲线差值时,会在路点间进行曲线平滑运动。适合复杂曲线轨迹的运动场景。
是否批量编辑 打开时,编辑组件本身的移动旋转缩放会同步到该组件的路点上。

沿路径运动的重复/返程模式设定如下:

重复/返程设定 描述
单向运动 组件物体从初始位置走到最后一个路点停止,不重复,不返回起点。
控制返程 接收到返程事件时会倒退回原位。
循环重复 运动器到达最后一个路点后,经过停顿时间,立刻回到初始位置重复运动。
往复运动 到达后将从最后一个路点经过到达停顿时间后反向移动回原位,经过返程停顿时间重复进行运动。

匀速直线运动 ​

物体从起点沿指定方向以恒定速度移动,到达时间后如果循环开启就重置位置从头再走。 速度 × 时间 = 位移量

使用例子:自动门、升降平台

匀速直线运动

  1. 确定移动的空间和坐标轴;
  2. 填写运动器失效时间,如果是一次性的运动就填写运动总时间;如果是持续性的可以填写99999这样的大数字;
  3. 填写不同方向轴上的线速度,或使用可视化编辑直接移动直线运动终点(如果看不见这个指示组件,可以把失效时间和线速度写小一点,这样就会出现在组件附近)
  4. 使用运动预览预览运动轨迹。
参数 描述
相对空间 设置为局部空间时,组件旋转会影响匀速直线运动的方向
运动器失效时间 运动器生效的总时间
使运动开启的事件 组件接收到该事件时会触发运动开始
使运动暂停的事件 组件接收到该事件时会触发运动暂停
被暂停时返程(仅单向运动生效) 开启后运动器被暂停后会以原速度返回起点
重复创建运动器 打开时每次通过事件激活该运动器时,会销毁上一次的运动器运行进程,重新创建一个新的进程。适合需要在事件触发时从头开始运动、且每次运动的起始状态可能不同的场景。
关闭时运动器保持不销毁,事件激活时仅执行暂停/恢复操作,会继续使用同一个运动器继续运动。适合只需要暂停/恢复的简单开关控制场景。

匀速直线运动的重复/返程模式设定如下:

重复/返程设定 描述
单向运动 组件到达终点后运动结束
单向重复 运动器运行完单程运动时间(不建议小于运动器失效时间)后,经过停顿时间,再次继续下一个单程运动,轨迹不重复,类似电梯一层楼一层楼上升。
往复运动 运动器运行完单程时间后,经过到达停顿时间以原速度返回起点,返程结束后经过返程停顿时间继续下一个单程运动。

匀速圆周运动 ​

物体绕自身中心轴以恒定角速度旋转。中心轴受组件重心位置影响

使用例子:转轴门、齿轮

匀速圆周运动

  1. 确定进行圆周运动的空间和坐标轴(包括在高级设置物理页中点击编辑重心位置确认生效重心)
  2. 填写运动器失效时间,如果是一次性的运动就填写运动总时间;如果是持续性的可以填写99999这样的大数字;
  3. 填写不同方向轴上的角速度;
  4. 使用运动预览预览运动轨迹。

多个组件绕中心旋转

匀速圆周运动只能以组件为中心旋转,如果希望多个组件绕一个中心旋转,可以绑定带有匀速圆周运动器的组件。

参数描述
相对空间设置为局部空间时,组件旋转会影响匀速圆周运动的方向轴
运动器失效时间运动器生效的总时间
使运动开启的事件组件接收到该事件时会触发运动开始
使运动暂停的事件组件接收到该事件时会触发运动暂停
被暂停时返程(仅单向运动生效)开启后运动器被暂停后会以原速度返回起点
重复创建运动器打开时每次通过事件激活该运动器时,会销毁上一次的运动器运行进程,重新创建一个新的进程。适合需要在事件触发时从头开始运动、且每次运动的起始状态可能不同的场景。
关闭时运动器保持不销毁,事件激活时仅执行暂停/恢复操作,会继续使用同一个运动器继续运动。适合只需要暂停/恢复的简单开关控制场景。

匀速圆周运动的重复/返程模式设定如下:

重复/返程设定描述
单向运动组件旋转到失效时间后结束
单向重复运动器运行完单程运动时间(不建议小于运动器失效时间)后,经过停顿时间,再次继续下一个单程运动。类似转一圈会停顿一会,再转一圈。
往复运动运动器运行完单程时间后,经过到达停顿时间以原速度转回初始状态,返程后经过返程停顿时间继续下一个单程运动。类似顺时针一圈,停顿后逆时针一圈,重复循环。

单摆运动 ​

物体围绕某个轴在一定角度范围来回摆动,角速度在两端最慢,平衡点时最快

使用例子:秋千、摆锤

单摆运动

  1. 确定进行单摆运动的空间和坐标轴(单摆不受重心影响)
  2. 填写运动器失效时间,如果是一次性的运动就填写运动总时间;如果是持续性的可以填写99999这样的大数字;
  3. 填写不同方向轴上的最大角速度,单摆运动和圆周运动的区别在于角速度不是匀速的,为了呈现自然的摆动感角速度呈余弦曲线变化,两端最慢平衡点最快,当角速度过大时会突破摆幅限制;
  4. 使用运动预览预览运动轨迹。
参数描述
相对空间设置为局部空间时,组件旋转会影响单摆运动的方向轴
运动器失效时间运动器生效的总时间
使运动开启的事件组件接收到该事件时会触发运动开始
使运动暂停的事件组件接收到该事件时会触发运动暂停
被暂停时返程(仅单向运动生效)开启后运动器被暂停后会以原速度返回起点
重复创建运动器打开时每次通过事件激活该运动器时,会销毁上一次的运动器运行进程,重新创建一个新的进程。适合需要在事件触发时从头开始运动、且每次运动的起始状态可能不同的场景。
关闭时运动器保持不销毁,事件激活时仅执行暂停/恢复操作,会继续使用同一个运动器继续运动。适合只需要暂停/恢复的简单开关控制场景。

单摆运动的重复/返程模式设定如下:

重复/返程设定描述
单向运动组件来回单摆运动到失效时间后结束
单向重复运动器运行完单程运动时间(不建议小于运动器失效时间)后,经过停顿时间,再次继续下一个单程运动。摆一轮会停顿一会,再摆一轮。
往复运动运动器运行完单程时间后,经过到达停顿时间以原速度转回初始状态,返程后经过返程停顿时间继续下一个单程运动。摆一轮停顿后反向摆一轮(通常轨迹不重复),重复循环。

变速运动 ​

物体按自定义速度曲线运动,可加速、减速、匀速组合,支持直线和圆周

运动总时长 = 加速时长 + 匀速时长。

物体在加速阶段按初速度 + 加速度 × 时间线性变化,到达加速时长后锁定最终速度,在匀速阶段保持恒定速度运行。

使用例子:匀减速滑动、加速度引擎

变速运动

  1. 确定使用的空间坐标系和变速运动类型
  2. 设置变速时长和加速度大小,根据需求设置匀速时长
  3. 使用运动预览预览运动轨迹。
参数描述
相对空间设置为局部空间时,组件旋转会影响单摆运动的方向轴
运动类型直线运动或圆周运动
变速时长加速持续的时间。越长加速越平缓,最终速度也越高。设为零时跳过加速段,直接从匀速开始。
匀速时长最高速运动的时间。越长走越远。变速时长加匀速时长等于总运动时间。
线加速度\角加速度速度从初速度开始,每秒增加线加速度的量。公式为 当前速度 = 初速度 + 线加速度 × 已过时间。
使运动开启的事件组件接收到该事件时会触发运动开始
使运动暂停的事件组件接收到该事件时会触发运动暂停
重复创建运动器打开时每次通过事件激活该运动器时,会销毁上一次的运动器运行进程,重新创建一个新的进程。适合需要在事件触发时从头开始运动、且每次运动的起始状态可能不同的场景。
关闭时运动器保持不销毁,事件激活时仅执行暂停/恢复操作,会继续使用同一个运动器继续运动。适合只需要暂停/恢复的简单开关控制场景。
重复/返程设定描述
单向运动组件进行变速运动到匀速阶段结束
单向重复运动器运行完单程运动时间(变速时长+匀速时长)后,经过停顿时间,再次继续下一个单程运动,直到运动器失效时间结束。
往复运动运动器运行完单程时间(变速时长+匀速时长)后,经过到达停顿时间以原速度转回初始状态,返程后经过返程停顿时间继续下一个单程运动,循环重复直到运动器失效时间结束。

初始设定

初始延迟时间是指运动开始之前等待的时间,单位为秒。

初始延迟时间的表现根据运动器的重复/返程模式而异:

重复返程模式表现
单次运动
(不重复、不返程)
初始延迟时间仅在运动器激活后生效一次,初始延迟时间时长内运动器暂停不动,到期后开始执行运动直到时间结束停止。后续不会再触发初始延迟时间。
周期运动
(重复、不返程)
初始延迟时间仅在首次激活后的第一个周期开始前生效一次。后续每个周期循环之间由到达后停顿时间控制暂停时长,与初始延迟时间无关。初始延迟时间只影响首次启动的延迟,不影响周期之间的间隔。
单次运动 +
被暂停时返程
初始延迟时间仅在运动器首次激活时生效。之后如果运动器被禁用/暂停,返程时不会再等待初始延迟时间,立即反向运动回起点。
如果返程结束后重新激活,初始延迟时间会再次生效,因为此时相当于新一轮的运动启动。
周期运动 +
被暂停时返程
初始延迟时间仅在首个周期开始前生效一次。每个周期结束时切换到下一周期(或返程方向切换),不会重新等待初始延迟时间。如果中途被外部暂停再恢复,恢复时也不会再次等待初始延迟时间。

运动器相关蛋码 ​

<激活运动器>

强行运行组件上的运动器,执行指定序号的运动器开始执行运动。

运动器和表现器不同,不使用运动器名称作为运动器的指代,而是按照运动器列表顺序搜寻对应的运动器,第一个运动器对应的序号是0,以此类推。

被暂停的运动器激活后将继续执行运动;已经运行结束的运动器,需要重置后重新激活才能继续执行。

运动器的激活方式

如果希望运动器在游玩中途触发开启,可以使用以下方式:

  1. 高级设置中设置组件的<使运动开启的事件>,当发送该自定义事件时即可触发该运动器;
  2. 如果存在多个使用相同运动开启事件运动器的组件,可以使用蛋码<发送自定义事件(指定对象)>给指定对象发送事件;
  3. 使用<激活运动器>蛋码启动指定组件上的指定运动器。

运动器的暂停同理。

<暂停运动器>

暂停正在运行的运动器,停止制定序号的运动器运动。

暂停的运动器需要使用<激活运动器>重新触发运动器执行。

<重置运动器>

运动器运行结束后需要使用此条蛋码重置才能再次激活。

<复制运动器>

将一个目标预设好的运动器全部复制给另一个目标,不包括蛋码动态添加的运动器;如果覆盖原有运动器为false则会将目标原本的运动器和复制过来的运动器叠加生效。

<添加直线\圆周运动器>

动态添加运动器功能,只能设置直线速度\角速度、运动持续总时长以及使用坐标系。不支持配置其他参数。可获取变量为整数,代表该运动器的序号。