EN

# 四、输入

SDK提供了奇遇手柄的功能接口。同时开发者可参考Unreal提供的控件交互组件实现场景内模型交互:https://docs.unrealengine.com/4.27/zh-CN/InteractiveExperiences/UMG/UserGuide/WidgetInteraction/ (opens new window)

# 4.1 手柄控制器组件

手柄的位置同步通过MotionController组件来实现,开发者可将控制器绑定在MotionController组件上:

图4.1 MotionController组件

# 4.2 按键定义及接口

在按键设置位置可以看到QIYUVRInput标签,奇遇手柄所用按键相应的蓝图节点驱动事件如下:

图4.2.1 QIYUTouch标签
  • 标签内包含了按键触发事件:

图4.2.2 按键触发事件
按键 手柄 输入事件
Home/Menu 左手 QIYU Touch (L) Menu img
右手 QIYU Touch (R) Home
Trigger 左手 QIYU Touch (L) Trigger img
右手 QIYU Touch (R) Trigger
Grip 左手 QIYU Touch (L) Grip img
右手 QIYU Touch (R) Grip
X 左手 QIYU Touch (L) X Press img
A 右手 QIYU Touch (R) A Press img
Y 左手 QIYU Touch (L) Y Press img
B 右手 QIYU Touch (R) B Press img
Joystick 左手 QIYU Touch (L) Thumbstick img
右手 QIYU Touch (R) Thumbstick
X Touch 左手 QIYU Touch (L) X Touch img
A Touch 右手 QIYU Touch (R) A Touch img
Y Touch 左手 QIYU Touch (L) Y Touch img
B Touch 右手 QIYU Touch (R) B Touch img
Joystick Touch 左手 QIYU Touch (L) Thumbstick Touch img
右手 QIYU Touch (R) Thumbstick Touch

# 4.3 状态及数据接口

函数名称 函数解释
手柄连接状态 左手 bool isConnect
右手
trigger 力度 左手 int32 triggerForce
右手
grip 力度 左手 int32 gripForce
右手
是否显示手柄 左手 bool isShow
右手
电池电量 左手 int32 BatteryLevel
右手
摇杆坐标 左手 FVector2D JoyStickPos
右手
手柄位置 左手 FVector Position
右手
手柄四元数[1] 左手 FQuat Rotation
右手
线速度 左手 FVector velocity
右手
线加速度 左手 FVector acceleration
右手
角速度 左手 FVector angVelocity
右手
角加速度 左手 FVector angAcceleration
右手

[1] : 为了达到更自然的手柄交互体验,从v1.5.0开始,手柄旋转四元数值做了调整,将手柄握持杆斜向上35°的姿态作为初始值,如下图所示。如果您在应用中调整过手柄角度,在升级SDK后,需要将模型角度水平向上旋转35°,达到自然的握持姿势。

图4.3 手柄初始姿态示意

注:如果应用需要使用奇遇手柄图片,可从此处 (opens new window)下载资源。

# 4.4 手柄震动蓝图接口

请优先通过QIYUController Start Vibration实现手柄震动。

  • QIYU 接口

图4.4.1 奇遇手柄震动接口

Amplitude:震动强度,取值范围0~1。

Duration:震动时长,单位为毫秒,取值范围 20~200000 (不支持设置小于20ms 的震动时长)。

  • UE标准接口

官方文档:https://docs.unrealengine.com/4.26/en-US/BlueprintAPI/Game/Feedback/PlayHapticEffect/ (opens new window)

注意:振幅(Amplitude)需要保证在0~1范围内

图4.4.2 引擎手柄震动接口

同时,SDK还支持了如下震动相关的引擎标准。

  • Set Haptics by Value
图4.4.3 震动接口

作用:调用该接口,手柄会根据对应的强度和频率,震动对应的手柄两秒。

输入参数:

Target:应该输入PlayerController的引用。

Frequency:震动频率,SDK暂不支持该配置项。

Amplitude:震动强度,范围0~1。

Hand:目前仅支持Left、Right。

  • Stop Haptic Effect
图4.4.4 停止震动

作用:停止手柄震动。

输入参数:

Target:应该输入PlayerController的引用。

Hand:目前仅支持Left、Right。

  • Set Disable Haptics
图4.4.5 禁用震动功能

作用:禁用手柄震动。

输入参数:

Target:应该输入PlayerController的引用。

New Disabled:是否禁用。