In XR applications in Unreal Engine, controllers can be used to accept user input, such as button presses or joystick movement, and track the movement of a user’s hands in space to perform interactions or gestures. Controllers provide a familiar interface for users to interact inside XR applications.
To streamline the process of adding controller-based interactions, such as grabbing objects, moving around the scene, or setting up user interfaces, see the Interaction SDK.
How does Controller Input and Tracking Work?
The Meta XR plugin for Unreal Engine exposes a unified input API that works across all supported Meta Quest controller models, including Meta Quest Touch, Meta Quest Touch Pro, and Meta Quest Touch Plus. Through a single input pipeline, you can query controller state for buttons, thumbsticks, triggers, and capacitive touch data. Capacitive touch refers to sensors on the controller that detect when your fingers are touching or near buttons and surfaces, without requiring a full press.
Controllers provide 6DOF (six degrees of freedom) tracking, reporting both position and rotation in 3D space. The plugin maps all controller inputs to Unreal Engine’s input system as FKey entries, so you can bind them using Enhanced Input or the legacy input system.
Supported controllers
The Meta XR plugin supports the following Meta Quest controller models:
Meta Quest Touch: shipped with Meta Quest 2
Meta Quest Touch Pro: shipped with Meta Quest Pro
Meta Quest Touch Plus: shipped with Meta Quest 3 and Meta Quest 3S
How do I set up Controller Input and Tracking?
You must have the Meta XR plugin for Unreal Engine installed and enabled in your project to use controller input and tracking. For installation instructions, see Installing the Meta XR plugin.
Controller tracking uses specialized components attached to a Pawn Actor. These components provide an API to access data that includes position and rotation for the controllers. You can access these positions and rotations through two tracking poses: grip, which represents the OpenXR standard grip pose where the hand holds the controller, and aim, which represents the OpenXR standard aim pose for the pointing direction of the controller.
Mappings of hardware input to events you can respond to in Blueprints or C++ code are created using the Enhanced Input system in Unreal Engine. The Meta XR plugin exposes all Meta Quest controller inputs to this system. For more information on setting up input mapping in Unreal Engine, see the Enhanced Input documentation.
Controller tracking and hand tracking are separate input systems provided by the same plugin module. The plugin can optionally support both simultaneously. For more information, see Hand Tracking.
Learn more
To learn more about using controllers in XR applications in Unreal Engine, see the following guides:
Design guidelines are Meta’s human interface standards and design frameworks that help you create safe, user-oriented, and retainable immersive and passthrough user experiences.