振动
在游戏中的受击、跳跃或按下按钮时添加振动脉冲。振动会向运行游戏的设备、受支持的实体控制器或已配对的 iPhone 控制器发送反馈。
在 交互 > 控制 中找到它。
属性
以深色模式显示的原生属性面板,使用振动行为的默认设置。
| 属性 | 默认值 | 设置说明 |
|---|---|---|
| Player | 1 | 要振动的已分配控制器所属的玩家。使用正数指定一名玩家。0 表示请求所有已连接控制器提供反馈。Device 不受此属性影响。 |
| Vibrate | Auto | 脉冲发送到哪里。选择 Auto、Device、Controller 或 Device and Controller。请参阅下方选项说明。 |
| Intensity (%) | 50 | 强度范围为 0 到 100%。设为 0 可停止振动。超出范围的值会被限制在范围内。 |
| Duration (ms) | 200 | 时长范围为 0 到 30000 毫秒。1000 ms 为一秒。设为 0 可停止振动。短促脉冲可使用 150 ms。 |
你可以将数值输出拖入 Player、Intensity 或 Duration。Intensity 使用百分比。如果源输出的范围为 0 到 1,请先乘以 100。Duration 使用毫秒。
选择脉冲的发送目标
- Auto: 优先尝试所选玩家的控制器。如果无法向控制器发送请求,则尝试让运行游戏的设备提供反馈。
- Device: 使用运行游戏的设备内置的触觉功能。例如,导出的游戏在受支持的 iPhone 上运行时,可以让这部 iPhone 振动。
- Controller: 使用分配给 Player 的控制器。它可以是受支持的实体控制器,也可以是已配对的 iPhone。反馈会发送到该玩家的控制器。
- Device and Controller: 同时请求运行游戏的设备和所选玩家的控制器提供反馈。
Device 始终指运行游戏的设备。如果游戏运行在 iPad 上,而玩家使用已配对的 iPhone,请选择 Controller 让 iPhone 振动。iPad 没有内置触觉功能。
输入与事件连接
每次执行都会请求一个脉冲。将游戏事件连接到振动行为顶部的白色圆点。底部的白色事件连接会在请求发出后继续执行,即使目标设备无法振动也是如此。它不会等待 Duration 时长结束。
向同一目标发送的新请求会替换当前脉冲。将 Intensity 或 Duration 设为 0 可停止振动。在 Auto 模式下,停止请求也会清除之前回退到设备的振动请求。
按下按钮时只触发一次脉冲,请使用 Pressed。While Held 可能会让振动行为每帧执行一次,并不断重新启动脉冲。
输出
success(布尔值):至少有一个目标接受请求时为true。所选目标都未接受请求时为false。向已配对的手机发送请求,并不能确认玩家实际感受到了振动。即使请求已被接受,浏览器或设备设置也可能阻止反馈。
即使 success 为 false,你连接的游戏行为仍会继续执行。如果你自己的 UI 需要检查请求结果,可以使用此输出。
示例:每次按下按钮时触发一个脉冲
- 添加 Controller Event。不要为它连接输入白色连接,这样它就会从场景开始时持续监听。
- 将 Player 设为 1,将 Control 设为 Bottom Button (A / ×),并将 Event 设为 Pressed。
- 添加 Vibrate。将 Player 设为 1,将 Vibrate 设为 Controller,将 Intensity (%) 设为 70,并将 Duration (ms) 设为 150。
- 将 Controller Event 底部的白色圆点连接到 Vibrate 顶部的白色圆点。
- 使用已分配给 Player 1 的控制器运行游戏。按下控制器底部的面按钮。
白色连接会请求触发脉冲。本示例无需拖入数据。
也可以将已配对的 iPhone 设为 Player 1 来尝试。行为设置相同。手机必须支持内置触觉功能,并保持 Controller Mode 打开。
为每位玩家提供反馈
Vibrate 使用当前的控制器分配。将 Player 设为 2,即可向 Player 2 的控制器发送反馈。如果该玩家通过 Assign Controller 或 Controls 覆盖层选择了其他控制器,下一次脉冲就会发送到新分配的控制器。
你也可以使用 Controller Event 的 playerIndex 输出:
- 在本示例中,将 Controller Event 的 Player 设为 2。
- 选择 Vibrate,打开其属性面板。
- 将 Controller Event 的绿色输出图标拖入 Vibrate 的 Player 字段,然后选择
playerIndex。 - 保留白色执行连接。绿色引用提供玩家编号;白色连接则请求触发脉冲。
演示动画,同时显示玩家引用和执行连接。
如果 Controller Event 监听的是 Player 0,未分配的控制器可能会输出 playerIndex = 0。Vibrate 会将 0 解释为所有已连接控制器。要仅向一位玩家提供反馈,请先将控制器分配到正数玩家槽位,再使用该输出。
为现有游戏添加反馈
保留现有的触控、键盘或控制器操作。将 Vibrate 连接到应该触发脉冲的游戏事件或操作之后。振动无需单独的输入映射。
例如,一个自定义的 Started Touching 按钮已经通过 Map Control Inputs 配置了对应的控制器操作,那么这两种输入都可以触发同一个 Vibrate 行为。若要在玩家的控制器上提供反馈,请选择 Controller;若需要在设备上提供回退反馈,请选择 Auto。
Vibrate 不会在已配对手机的布局中添加新按钮。布局仍由 Controller Event 和 Map Control Inputs 的绑定决定。玩家无法在 Controls 覆盖层中重新绑定振动。
兼容性与停止振动
反馈需要硬件和平台支持。控制器可能能够接收输入,但不支持振动。已配对的 iPhone 会报告其触觉功能支持情况;已配对的 iPad 无法通过内置触觉功能振动。
原生播放器和 Universal 播放器使用相同的强度和时长单位。浏览器反馈取决于浏览器、已连接的控制器及其设置。某些浏览器的设备振动 API 无法调节强度。
当游戏失去焦点、控制器会话结束,或控制器断开连接或切换玩家时,反馈会停止。退出 Controller Mode 或锁定已配对的手机也会停止手机本地的反馈。网络连接中断可能会延迟停止请求,因此每个脉冲的时长都有上限。
检查设置
- 已配对的 iPhone 不振动: 将 Vibrate 设为 Controller,并确认 Player 与手机的分配相符。保持 Controller Mode 打开。手机必须支持内置触觉功能。
- 振动的是错误的控制器: 检查 Player。值为 0 时会请求所有已连接控制器提供反馈。
- 脉冲持续时间太长: Duration 使用毫秒。输入 150 表示 150 ms,输入 1000 表示一秒。
- 脉冲不断重启: 检查输入事件是否为 While Held。若只需触发一次脉冲,请使用 Pressed。
- 游戏运行正常,但没有感受到振动: 检查控制器是否支持振动,以及平台设置是否允许振动。读取
success,查看请求是否已被接受。

