Fix XrNavigation teleport offset#8409
Merged
Merged
Conversation
The teleport feature was moving the navigation entity directly to the hit point without compensating for the camera's local XZ offset from XR head tracking. This caused the user to land short of the target. Now subtracts the camera's local XZ position from the hit point before setting the navigation entity position, so the user's head ends up directly above where they were pointing. Fixes #8408
Contributor
There was a problem hiding this comment.
Pull request overview
This PR fixes a teleportation offset bug in the XrNavigation script where users would land short of their intended target position. The fix accounts for the camera's local XZ offset from XR head tracking by subtracting it from the hit point before positioning the navigation entity.
Changes:
- Added camera local position offset adjustment to teleportation logic to ensure the camera ends up directly above the target location
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
willeastcott
added a commit
that referenced
this pull request
Jan 26, 2026
The teleport feature was moving the navigation entity directly to the hit point without compensating for the camera's local XZ offset from XR head tracking. This caused the user to land short of the target. Now subtracts the camera's local XZ position from the hit point before setting the navigation entity position, so the user's head ends up directly above where they were pointing. Fixes #8408
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Technical Details
In WebXR, the camera entity's local position represents the user's physical head position within their play space. The previous code moved the navigation entity directly to the hit point without compensating for this offset, causing the camera to end up at
hitPoint + cameraLocalOffsetinstead of directly abovehitPoint.The fix subtracts the camera's local XZ position from the hit point before setting the navigation entity position.
Test Plan
Closes #8408