VR hands in floor when built,Oculus hands in wrong position when built

Hello. I have recently tried to make a game using the Oculus XR package on my Quest 2. This was my first attempt at a VR game, and I used Unity’s VR template. The game works perfectly when being played in the editor using Oculus Link. However, when I build the game to the Quest, the hands are far below where they should be, ending up in the floor unless I stretch my arms. I have tried lots of things, all of my packages are up to date, but nothing seems to work. Please help me.

@Eggmogo I just encountered this issue and then found the solution.

The XRRig prefab comes in with a component called “Camera Offset” on it by default. This is likely on the rig itself, but may be on the “Camera Offset” game object in the hierarchy. To correct the issue, set the “Camera Y Offset” to 0 and change the “Requested Tracking Mode” to “Floor.”

It’s working perfectly for me now. Hope this helps anyone else who runs into this issue!

@rh_galaxy Nothing happens to the hands, only the camera is affected.

Try recalibrating the floor level and play area, or have the user recenter every startup (long press oculus button), or recentering automatically (by calculating an offset) at startup (but you are not supposed to do that). My game is a seated or standing game, not roomscale. The center position and height will vary with where the user is and the rotation around Y. Position and Rotation Y will be reset by a recentering action.


This is how you can do recentering from code, but I found that it doesn’t work for me on the Quest.

UnityEngine.XR.InputDevice headDevice =
    InputDevices.GetDeviceAtXRNode(XRNode.Head);
headDevice.subsystem.TrySetTrackingOriginMode( 
    TrackingOriginModeFlags.Device);
headDevice.subsystem.TryRecenter();

You can also try starting a new project and just add a camera, and a tracked pose driver (like in the picture in earlier comment) and a floor, and see how that goes.
Also you should always place the camera in another container object, and move the container when you want to move the camera, because moving the camera by setting the transform will not work as it will be overwritten by the system.