Can't grab XR Grab Interactable when collider is placed on child game object

Is it correctly understood that you should be able to grab an XR Grab Interactable by any collider in the ‘Colliders’ list on the component? From what I have read, that should to be the case. But when creating two objects, one with a collider on the same game object as the interactable component and another one with a collider on a child game object, I’m only able to grab the one that has the components on the same game object.

Have I misunderstood what the ‘Colliders’ list is for, or should I report this as a bug?

I’m using XR Interaction Toolkit 3.0.5.

Yes, any of the colliders in the list will map to that interactable. However, the logic for how the Colliders list is initialized could be causing it to not be selected. On Awake, the object will automatically find all enabled Collider components on it or any child GameObjects, and filter out any that are marked as Is Trigger. If you want to include any triggers or colliders which are initially disabled, you will need to manually set them in the Inspector window before entering Play mode.

Also, if you are adding additional colliders to the list during runtime, it doesn’t automatically get associated with the interactable. You will need to disable the component (to unregister it from the XR Interaction Manager) and then re-enable the component (to register it with the XR Interaction Manager).

Also check that the child GameObject has a Layer that you expect to be hit by an interactor since it might be different from the parent.

Finally, ensure that the Collider is only added to one Colliders list (i.e. another interactable isn’t also referencing it).

Okay, glad to hear that I understood correctly.

I was using the XRTouchSpaceInteractor from com.unity.polyspatial.xr, and it seems that it expects the XRBaseInteractable to be on the same game object as the collider.

I have reported this as a bug (IN-83245). For now I will look at the VolumeDemo in the XR Interaction Toolkit visionOS samples, since that seems to be working as expected.

Thanks for the quick response