Find and click a target object in XR. Use when testing UI interactions, clicking buttons, or verifying interactable elements work correctly.
Install
npx skillscat add facebook/immersive-web-sdk/click-target Install via the SkillsCat registry.
Click Target in XR
Find a target object in the scene and click it using a controller, then verify the click registered.
Arguments
$ARGUMENTS should be a description of the target to find (e.g., "the RESTART button", "the scoreboard", "the settings panel").
Workflow
1. Get Scene Hierarchy
Use mcp__iwsdk-dev-mcp__scene_get_hierarchy to find the target object's UUID.
- Look for objects with entityIndex (these are ECS entities)
- PanelUI elements typically have nested children for their content
2. Get Target Transform
Use mcp__iwsdk-dev-mcp__scene_get_object_transform with the target UUID.
- Use
positionRelativeToXROriginfor all positioning operations - Note the position for the next steps
3. Position Headset to Look at Target
Use mcp__iwsdk-dev-mcp__xr_look_at with device headset and the target position.
- This orients the headset to face the target
4. Screenshot to Verify Target Visible
Use mcp__iwsdk-dev-mcp__browser_screenshot to verify:
- Target is visible in the view
- Target is not occluded by other objects
- If not visible, use
mcp__iwsdk-dev-mcp__xr_look_atwithmoveToDistanceto get closer
5. Position Controller
Use mcp__iwsdk-dev-mcp__xr_get_transform to check controller position.
- If controller is visible in screenshot and not occluding target, proceed
- If controller is far away or not visible:
- Get headset position with
mcp__iwsdk-dev-mcp__xr_get_transform - Set controller to headset position with
mcp__iwsdk-dev-mcp__xr_set_transform - Micro-adjust: offset x by +0.25 (right) or -0.25 (left), y by -0.1, z by -0.3
- Get headset position with
6. Point Controller at Target
Use mcp__iwsdk-dev-mcp__xr_look_at with the controller device and target position.
- For UI elements on panels, you may need to target a specific child element
- If the target is a button on a panel, the button may be offset from the panel center
7. Click
Use mcp__iwsdk-dev-mcp__xr_select with the controller device.
8. Verify Click
Use mcp__iwsdk-dev-mcp__browser_get_console_logs with a pattern to check for expected log messages.
- If no logs match, the click may have missed - adjust target position and retry
- Common adjustments: change x or z by 0.05-0.1 to hit child elements
Tips
- For PanelUI buttons, the button position is often offset from the panel center
- Use
mcp__iwsdk-dev-mcp__scene_get_object_transformon child elements to find exact button positions - Always verify with console logs rather than assuming from visuals
- The ray visual in screenshots can be misleading - test with actual clicks
- Either controller (left or right) can be used
Example
To click the RESTART button on the pong scoreboard:
- Find scoreboard entity (entityIndex 6 in the pong game)
- Scoreboard is at (0, -0.798, -1.25)
- Button is at approximately (0.05, -0.798, -1.109) - offset toward player
- Point controller at button position and click
- Verify "[BUTTON CLICKED]" appears in console logs