Blueprints
由 UBhapticsSDK2 生成。
所有节点的 Target 均为 "Bhaptics SDK2"。
事件驱动触觉播放函数
播放绑定到 Designer/Portal 中创建的特定触觉事件的触觉模式。我们强烈推荐使用这些函数。
Play Haptic

播放触觉事件。这是调用触觉事件最基本的方式,在所有触觉事件调用函数中开销最低。
输入
| 类型 | 名称 | 说明 |
|---|---|---|
| exec | In | |
| String | Event Id | 要播放的触觉事件的名称。 |
输出
| 类型 | 名称 | 说明 |
|---|---|---|
| exec | Out | |
| Integer | Return Value | Request ID。您可以使用 Request ID 来停止触觉。如果返回失败,则返回 -1。 |
Play Haptic With Option

在调整触觉的强度、Duration 和方向的同时播放触觉事件。
输入
| 类型 | 名称 | 说明 |
|---|---|---|
| exec | In | |
| String | Event Id | 要播放的触觉事件的名称。 |
| Float | Intensity | 触觉 Intensity 乘以此值。 |
| Float | Duration | 触觉 Duration 乘以此值。 |
| Float | Angle X | 围绕全局 Vector3.up 逆时针旋转触觉。有效范围: [0.0f - 360.0f] |
| Float | Offset Y | 将触觉向上或向下移动。有效范围: [-0.5f - 0.5f] |
输出
| 类型 | 名称 | 说明 |
|---|---|---|
| exec | Out | |
| Integer | Return Value | Request ID。您可以使用 Request ID 来停止触觉。如果返回失败,则返回 -1。 |
Play Haptic With StartTime

从给定的起始位置开始,在调整触觉的强度、Duration 和方向的同时播放触觉事件。
输入
| 类型 | 名称 | 说明 |
|---|---|---|
| exec | In | |
| String | Event Id | 要播放的触觉事件的名称。 |
| Integer | Start Millis | 播放开始位置,以毫秒为单位。事件开头的 Start Millis 毫秒会被跳过(这是起始 Offset,而非播放前的延迟)。仅限 Windows/macOS/Android。 |
| Float | Intensity | 触觉 Intensity 乘以此值。 |
| Float | Duration | 触觉 Duration 乘以此值。 |
| Float | Angle X | 围绕全局 Vector3.up 逆时针旋转触觉。有效范围: [0.0f - 360.0f] |
| Float | Offset Y | 将触觉向上或向下移动。有效范围: [-0.5f - 0.5f] |
输出
| 类型 | 名称 | 说明 |
|---|---|---|
| exec | Out | |
| Integer | Return Value | Request ID。您可以使用 Request ID 来停止触觉。如果返回失败,则返回 -1。 |
Play Loop

重复播放触觉。此外,与 PlayHapticWithOption 函数一样,您可以调整触觉的强度、Duration 和方向。
输入
| 类型 | 名称 | 说明 |
|---|---|---|
| exec | In | |
| String | Event Id | 要播放的触觉事件的名称。 |
| Float | Intensity | 触觉 Intensity 乘以此值。 |
| Float | Duration | 触觉 Duration 乘以此值。 |
| Float | Angle X | 围绕全局 Vector3.up 逆时针旋转触觉。有效范围: [0.0f - 360.0f] |
| Float | Offset Y | 将触觉向上或向下移动。有效范围: [-0.5f - 0.5f] |
| Integer | Interval | 循环之间的时间间隔,以毫秒为单位。 |
| Integer | Max Count | 循环次数。 |
输出
| 类型 | 名称 | 说明 |
|---|---|---|
| exec | Out | |
| Integer | Return Value | Request ID。您可以使用 Request ID 来停止触觉。如果返回失败,则返回 -1。 |
触觉直接播放函数
如果您想在不创建新事件的情况下播放触觉,请使用这些函数。
Play Dot

在特定触觉执行器上播放触觉反馈。无需创建事件即可使用此函数。
输入
| 类型 | 名称 | 说明 |
|---|---|---|
| exec | In | |
| Integer | Position | 触觉设备的类型。 |
| Array of Integers | Motor Values | 根据设备的电机数量指定数组长度。数组中的值表示电机的 Intensity。数组中每个值的有效范围: [0 - 100] |
| Float | Seconds | 触觉的 Duration,以秒为单位。建议大于或等于 0.1f。 |
-
Position
值 设备 0 TactSuit Pro 1 TactSleeve(Left) 2 TactSleeve(Right) 3 TactVisor 4 Tactosy for Hands(Left) 5 Tactosy for Hands(Right) 6 Tactosy for Feet(Left) 7 Tactosy for Feet(Right) 8 TactGlove(Left) 9 TactGlove(Right)
输出
| 类型 | 名称 | 说明 |
|---|---|---|
| exec | Out | |
| Integer | Return Value | Request ID。您可以使用 Request ID 来停止触觉。如果返回失败,则返回 -1。 |
Play Path

在特定坐标周围播放触觉。更多信息请参阅 C++ API 参考。
[TactGlove DK3] Play Path 不驱动 DK3 手套上的手腕音圈电机(VCM)。
输入
| 类型 | 名称 | 说明 |
|---|---|---|
| exec | In | |
| Integer | Position | 触觉设备的类型。 |
| Array of Floats | X | 指定 X 坐标。数组中每个值的有效范围: [0.0f - 1.0f] |
| Array of Floats | Y | 指定 Y 坐标。数组中每个值的有效范围: [0.0f - 1.0f] |
| Array of Integers | Motor Values | 根据设备的电机数量指定数组长度。数组中的值表示电机的 Intensity。数组中每个值的有效范围: [0 - 100] |
| Float | Seconds | 触觉的 Duration,以秒为单位。建议大于或等于 0.1f。 |
-
Position
值 设备 0 TactSuit Pro 1 TactSleeve(Left) 2 TactSleeve(Right) 3 TactVisor 4 Tactosy for Hands(Left) 5 Tactosy for Hands(Right) 6 Tactosy for Feet(Left) 7 Tactosy for Feet(Right) 8 TactGlove(Left) 9 TactGlove(Right)
输出
| 类型 | 名称 | 说明 |
|---|---|---|
| exec | Out | |
| Integer | Return Value | Request ID。您可以使用 Request ID 来停止触觉。如果返回失败,则返回 -1。 |
Play Waveform

仅限 TactGlove。 在 TactGlove 中播放触觉。与使用 "Play Dot" 不同,您可以精细地调整触觉 Duration 和振动 Intensity 的变化。这使得触觉反馈的表现更加精细。
每个数组必须有六个(TactGlove DK2)或八个(TactGlove DK3)元素,并且这三个数组的长度必须相同。
输入
| 类型 | 名称 | 说明 |
|---|---|---|
| exec | In | |
| Integer | Position | 触觉设备的类型。 |
| Array of Integers | Motor Intensities | 电机 Intensity 的数组。其长度必须与 TactGlove 的电机数量一致:六个(TactGlove DK2)或八个(TactGlove DK3)。数组中每个值的有效范围: [0 - 100] |
| Array of EBhapticsGlovePlayTime Enums | Play Time Values | 与 Motor Intensities 长度相同的数组(DK2 为六个,DK3 为八个),每个元素表示一个作动的时间间隔,时间使用 EBhapticsGlovePlayTime enum 定义。 |
| Array of EBhapticsGloveShapeValue Enums | Shape Values | 与 Motor Intensities 长度相同的数组(DK2 为六个,DK3 为八个),每个元素表示触觉 Intensity 随时间变化的形态,由 EBhapticsGloveShapeValue enum 指定。 |
| Integer | Frequency | [仅限 TactGlove DK3] DK3 手套自身执行器的振动频率,以 Hz 为单位。默认值为 80。它对 DK2 手套或通用(非 Windows/macOS)路径没有影响。仅限 Windows/macOS。 |
| Integer | Repeat Count | 重复波形的次数,从 1 开始。0 表示播放一次。仅限 Windows/macOS。 |
-
Position
值 设备 8 TactGlove(Left) 9 TactGlove(Right) -
Motor Intensities
数组索引 电机位置… 0 拇指指尖 1 食指指尖 2 中指指尖 3 无名指指尖 4 小指指尖 5 手腕上 6 手掌(拇指侧) 7 手掌(小指侧) -
Play Time Values
值 Duration 等同于… EBhapticsGlovePlayTime::None 无 0 EBhapticsGlovePlayTime::FiveMS 5ms 1 EBhapticsGlovePlayTime::TenMS 10ms 2 EBhapticsGlovePlayTime::TwentyMS 20ms 4 EBhapticsGlovePlayTime::ThirtyMS 30ms 6 EBhapticsGlovePlayTime::FortyMS 40ms 8 -
Shape Values
值 波形 等同于… EBhapticsGloveShapeValue::Constant 在 Duration 期间保持恒定 Intensity 0 EBhapticsGloveShapeValue::Decreasing 从指定的 Intensity 开始并减小一半 1 EBhapticsGloveShapeValue::Increasing 从指定 Intensity 的一半开始并增加到指定值。 2
输出
| 类型 | 名称 | 说明 |
|---|---|---|
| exec | Out | |
| Integer | Return Value | Request ID。您可以使用 Request ID 来停止触觉。如果返回失败,则返回 -1。 |
其他函数
Stop Haptic By Event Id

通过 Event ID 停止触觉事件。返回停止是否成功。
输入
| 类型 | 名称 | 说明 |
|---|---|---|
| exec | In | |
| String | Event Id | 要停止的触觉事件的名称。 |
输出
| 类型 | 名称 | 说明 |
|---|---|---|
| exec | Out | |
| Boolean | Return Value | 停止是否成功。 |
Stop Haptic By Request Id

使用执行触觉的函数返回的 Request ID 来停止触觉事件。返回停止是否成功。
输入
| 类型 | 名称 | 说明 |
|---|---|---|
| exec | In | |
| Integer | Request Id | 要停止的正在播放的触觉事件的 Request ID。 |
输出
| 类型 | 名称 | 说明 |
|---|---|---|
| exec | Out | |
| Boolean | Return Value | 停止是否成功。 |
Stop Haptic

停止当前正在播放的所有触觉。返回停止是否成功。
输入
| 类型 | 名称 | 说明 |
|---|---|---|
| exec | In |
输出
| 类型 | 名称 | 说明 |
|---|---|---|
| exec | Out | |
| Boolean | Return Value | 停止是否成功。 |
Pause Haptic By Event Id

通过 Event ID 暂停触觉事件。播放位置会被保留,以便之后可以用 "Resume Haptic By Event Id" 继续播放。
输入
| 类型 | 名称 | 说明 |
|---|---|---|
| exec | In | |
| String | Event Id | 要暂停的触觉事件的名称。 |
输出
| 类型 | 名称 | 说明 |
|---|---|---|
| exec | Out |
Resume Haptic By Event Id

恢复之前用 "Pause Haptic By Event Id" 暂停的触觉事件,从暂停的位置继续播放。
输入
| 类型 | 名称 | 说明 |
|---|---|---|
| exec | In | |
| String | Event Id | 要恢复的触觉事件的名称。 |
输出
| 类型 | 名称 | 说明 |
|---|
Is Playing

检查触觉是否正在播放。
输入
| 类型 | 名称 | 说明 |
|---|---|---|
| exec | In |
输出
| 类型 | 名称 | 说明 |
|---|---|---|
| exec | Out | |
| Boolean | Return Value | 事件是否正在播放。 |
Is Playing By Event Id

检查此 Event ID 对应的触觉事件是否正在播放。
输入
| 类型 | 名称 | 说明 |
|---|---|---|
| exec | In | |
| String | Event Id | 要检查是否正在播放的触觉事件的名称。 |
输出
| 类型 | 名称 | 说明 |
|---|---|---|
| exec | Out | |
| Boolean | Return Value | 事件是否正在播放。 |
Is Playing By Request Id

检查此 Request ID 对应的触觉事件是否正在播放。
输入
| 类型 | 名称 | 说明 |
|---|---|---|
| exec | In | |
| Integer | Request Id | 要检查是否正在播放的触觉事件的 Request ID。 |
输出
| 类型 | 名称 | 说明 |
|---|---|---|
| exec | Out | |
| Boolean | Return Value | 事件是否正在播放。 |
Initialize bHaptics

初始化触觉环境。在使用触觉相关函数之前应调用此函数。
输入
| 类型 | 名称 | 说明 |
|---|---|---|
| exec | In |
输出
| 类型 | 名称 | 说明 |
|---|---|---|
| exec | Out |
Ping

向特定设备发送简单的触觉反馈。
输入
| 类型 | 名称 | 说明 |
|---|---|---|
| exec | In | |
| Bhaptics Device Structure | Device | 您想要发送 ping 的设备。 |
输出
| 类型 | 名称 | 说明 |
|---|---|---|
| exec | Out |
Ping All
向所有已连接的设备发送简单的触觉反馈。
输入
| 类型 | 名称 | 说明 |
|---|---|---|
| exec | In |
输出
| 类型 | 名称 | 说明 |
|---|---|---|
| exec | Out |
Destroy bHaptics

销毁触觉环境。此函数必须在游戏结束时调用,并且只能调用一次。
输入
| 类型 | 名称 | 说明 |
|---|---|---|
| exec | In |
输出
| 类型 | 名称 | 说明 |
|---|---|---|
| exec | Out |
Get bHaptics devices

获取已连接触觉设备信息的数组。
输入
| 类型 | 名称 | 说明 |
|---|---|---|
| exec | In |
输出
| 类型 | 名称 | 说明 |
|---|---|---|
| exec | Out | |
| Array of Bhaptics Device Structures | Return Value | 设备列表。 |
Is bHaptics Available

检查触觉环境是否已初始化并准备好使用触觉相关函数。
输入
| 类型 | 名称 | 说明 |
|---|---|---|
| exec | In |
输出
| 类型 | 名称 | 说明 |
|---|---|---|
| exec | Out | |
| Boolean | Return Value | bHaptics 环境是否可用。 |
Project To Vest With Player Collision Object

用于计算给定碰撞接触点相对于玩家的 Offset 值(角度和高度)的辅助函数。这些 Offset 值可用于能够调整触觉位置的 PlayHapticWithOption 和 PlayLoop。
此函数假定正面方向与背心的前面对齐,并将玩家的位置视为原点。
更多信息请参阅 C++ API 参考。
输入
| 类型 | 名称 | 说明 |
|---|---|---|
| Vector | Contact Location | 全局坐标系中的接触点。 |
| Primitive Component Object Reference | Player Component | 对附加到玩家的图元组件的引用。 |
| Float | Half Height | 玩家实际身高的一半值,以厘米为单位。 |
输出
| 类型 | 名称 | 说明 |
|---|---|---|
| Bhaptics Rotation Option Structure | Return Value | Offset 值。 |
Project To Vest With Player Location/Position

用于根据接触位置和玩家变换信息计算 Offset 值的辅助函数。它类似于 "Project To Vest",但仅计算角度 Offset(Offset Angle X)。高度(Offset Y)将始终为 0。
输入
| 类型 | 名称 | 说明 |
|---|---|---|
| Vector | Contact Location | 全局坐标系中的接触点。 |
| Vector | Player Location | 玩家的位置。 |
| Rotator | Player Rotation | 玩家的旋转。 |
输出
| 类型 | 名称 | 说明 |
|---|---|---|
| Bhaptics Rotation Option Structure | Return Value | Offset 值。 |
Custom Project To Vest

用于根据碰撞计算 Offset 值的辅助函数。执行与 "Project To Vest" 相同的功能,但允许更改 Forward 和 Up 向量。
输入
| 类型 | 名称 | 说明 |
|---|---|---|
| Vector | Contact Location | 全局坐标系中的接触点。 |
| Primitive Component Object Reference | Player Component | 对附加到玩家的图元组件的引用。 |
| Float | Half Height | 玩家实际身高的一半值,以厘米为单位。 |
| Vector | Up Vector | 用于 Offset 计算的参考向上方向向量。 |
| Vector | Forward Vector | 用于 Offset 计算的参考正面方向向量。 |
输出
| 类型 | 名称 | 说明 |
|---|---|---|
| Bhaptics Rotation Option Structure | Return Value | Offset 值。 |