Design

Indirect interaction best practices

Updated: Sep 9, 2026
Focus on creating an ergonomic and responsive experience that minimizes physical fatigue while providing high-confidence targeting logic.

Best practices

Practice Description
Ergonomic neutrality
Prioritize indirect interactions for long-duration tasks to keep users in a neutral body position, which is more comfortable than extended direct interaction.
Targeting hierarchy
Use eyes for targeting on devices that support eye tracking, and fall back to hands or controllers on devices that do not.
Hand raycast aim
Ray casting with hands is sensitive to small movements. The pinch gesture itself causes a slight hand shift, which often pulls the ray cursor off small targets. This is a common failure mode for close buttons (the "X"), small toggles, and tightly packed controls. For the best result, use Interaction SDK's Ray Interactor, which is optimized for ray interactions and mitigates pinch-caused jitter. If you are not using ISDK, you can access the runtime raycast pose through OpenXR via the XR_FB_hand_tracking_aim extension's aimPose property.
Comfortable distance
Indirect interaction is most comfortable from roughly 0.8m to 3m. Inside that range, users can target panels without straining their arm or struggling to read content.
Multimodal feedback
Deliver multiple forms of feedback. Use Interaction SDK for best practice designs for visual ray lines, cursors, and effects. Use sound and haptics on controllers to confirm interaction states and improve user confidence.
Targeting disambiguation
Utilize the Interaction SDK's (ISDK) "first/best hover" logic to prioritize intent in scenes containing multiple, closely-packed interactables.
Gesture consistency
Always use the standard pinch gesture for hand-based selections and the trigger for controller-based selection to maintain system-wide familiarity.
Targeting assistance
Implement magnetism and snapping when relevant to make targeting feel more satisfying and less reliant on pixel-perfect aim.

Dos and don’ts

Below is a list of recommended practices when using indirect interactions in your immersive experience:
DO Use Interaction SDK's Ray Interactor for hand ray casting. If you are not using ISDK, use the OpenXR XR_FB_hand_tracking_aim extension's aimPose.
DON'T Require users to hold their hand in an uncomfortable position for extended periods to maintain a stable ray.
DO Use visuals, audio, and controller-haptic feedback to confirm every targeting and selection event.
DON'T Make interactive elements too small or closely packed, as this can lead to accidental selections when the user is slightly moving while performing a pinch or selection.
DO Use ISDK's "first/best hover" option to prioritize intent in scenes with multiple interactables.
DON'T Introduce long delays in response time that hinder the fluidity of the interaction.
DO Use techniques like filtering rotational noise, casting conical frustums, and snapping to interactables for smoother targeting.
DON'T Provide hover effects or interactions for objects that are not in the field of view of the user, occluded, or invisible to the user.
DO Position indirect interactable content a comfortable distance from users, between 0.8 to 3 meters away.
DON'T Use the head ray as a primary pointer for users. Use eye tracking where available, and hand or controller ray casting otherwise.

Next steps

Designing experiences

Developing experiences

Unity

Unreal