1. Reference for Example Levels
Example Level Name:Level_UdxHandControl
Only provided for testing and reference.
2. Creating a Character Blueprint
2.1. Creating a New Blueprint Inherited from the Pawn/Character Base Class
Base Class:Pawn/Character
Add the Joystick Event Receiving Component HandControlInput(v1.3.1 version: HandJoystick, The same applies below.)
Parameter Name
Type
Default Value
Description
Joystick dead zone. When the value is between ±0.15, the associated events will not be triggered. The range is 0~1.
Enables all joystick events. When turned off, the joystick events for both hands will not be enabled.
Enables left-hand joystick events. Needs to enable all joystick events first.
Enables right-hand joystick events. Needs to enable all joystick events first.
TrackPad gesture trigger threshold. Range: 0~60
Grip gesture trigger threshold. Range: 0~80
Trigger gesture trigger threshold. Range: 0~100
Initialize HandControlInput Component
Initialize by calling the function InitHandControlInput to load the HandComponent.
Add Vibration Feedback Functionality
It needs to trigger the vibration feedback function CallVibration by calling the component HandControlInput at the corresponding location in the blueprint. Here, a method to obtain the CharName from LiveLink is provided.
Add joystick trigger events
By adding joystick events through the component HandControlInput, custom logic can be implemented.
3. Function/Event Definitions
3.1. CallVibration
Function Description: Sends vibration data to the HandDriver software.
Parameter Name
Type
Default Value
Description
The IP address of the computer where the HandDriver software is located. Use the local IP 127.0.0.1 if it is on the same computer.
Enter the data source name set in LiveLink, which is used to identify the character.
The joystick vibrator on which hand (Left/Right).
The sequence number of the activated vibrator (AllOff: None, Vib1: 1, Vib2: 2, AllOn: All).
The activation time of the vibrator (0.04s-2.5s).
The vibration intensity of the vibrator (the range is 4-10).
Return Value: Returns the data sent this time to verify the data format.
3.2. MoveForwardEvent
Function Description: Receives the Y-axis data of the left-hand joystick.
Parameter Name
Type
Range
Description
Returns the Y value of the left-hand joystick.
3.3. MoveRightEvent
Function Description: Receives the X-axis data of the left-hand joystick.
Parameter Name
Type
Range
Description
Returns the X value of the left-hand joystick.
3.4. LookUpEvent
Function Description: Receives the Y-axis data of the right-hand joystick.
Parameter Name
Type
Range
Description
Returns the Y value of the right-hand joystick.
Function Description: Receives the X-axis data of the right-hand joystick.
Parameter Name
Type
Range
Description
Returns the X value of the right-hand joystick.
Function Description: Triggered when the A button on the left/right hand is pressed.
Return Value: None
Function Description: Triggered when the B button on the left/right hand is pressed.
Return Value: None
Function Description: Triggered when the A+B buttons on the left/right hand are pressed simultaneously.
Return Value: None
Function Description: Triggered when the joystick button on the left/right hand is pressed.
Return Value: None
3.10. TrackPad_L/REvent
Function Description: Called when the TrackPad gesture is triggered on the left/right hand.
Return Value: None
3.11. UnTrackPad_L/REvent
Function Description: Called when the left/right hand releases the TrackPad gesture.
Return Value: None
3.12. Grip_L/REvent
Function Description: Called when the left/right hand triggers the Grip gesture..
Return Value: None
3.13. UnGrip_L/REvent
Function Description: Called when the left/right hand releases the Grip gesture.
Return Value: None
3.14. Trigger_L/REvent
Function Description: Called when the Trigger gesture is triggered on the left/right hand.
Return Value: None
3.15. UnTrigger_L/REvent
Function Description: Called when the left/right hand releases the Trigger gesture.
Return Value: None
4.1. When Menu is triggered by pressing A+B, A or B is fired first
Answer: Introduce two boolean flags to track whether the Menu key is being held. Set the flag to true when Menu is pressed and back to false when the action finishes. Add a check for this flag in the A/B handlers so they only proceed when the Menu key is not active.