From 115fe62c49a019bc9b1aa229af72f17db77853a3 Mon Sep 17 00:00:00 2001 From: Pascal Serrarens Date: Mon, 8 May 2023 17:34:53 +0200 Subject: [PATCH] Fix camera position when changing avatars --- .../Scripts/Extensions/UnityXR/UnityXRHead.cs | 11 +++++++++++ Runtime/HumanoidControl/Scripts/HumanoidControl.cs | 3 +++ 2 files changed, 14 insertions(+) diff --git a/Runtime/HumanoidControl/Scripts/Extensions/UnityXR/UnityXRHead.cs b/Runtime/HumanoidControl/Scripts/Extensions/UnityXR/UnityXRHead.cs index 5ed3e07..8627a07 100644 --- a/Runtime/HumanoidControl/Scripts/Extensions/UnityXR/UnityXRHead.cs +++ b/Runtime/HumanoidControl/Scripts/Extensions/UnityXR/UnityXRHead.cs @@ -82,6 +82,17 @@ namespace Passer.Humanoid { return sensorComponent as UnityXRHmd; } + public void UpdateSensorLocation() { + Vector3 position = headTarget.transform.TransformPoint(headTarget.head2eyes); + Quaternion rotation = headTarget.transform.rotation; + + UnityXR unityXRtracker = tracker.trackerComponent as UnityXR; + sensorComponent = unityXRtracker.GetHmd(position, rotation); + + sensorComponent.transform.position = position; + sensorComponent.transform.rotation = rotation; + } + #endregion #region Start diff --git a/Runtime/HumanoidControl/Scripts/HumanoidControl.cs b/Runtime/HumanoidControl/Scripts/HumanoidControl.cs index bb17943..1d86e01 100644 --- a/Runtime/HumanoidControl/Scripts/HumanoidControl.cs +++ b/Runtime/HumanoidControl/Scripts/HumanoidControl.cs @@ -453,6 +453,9 @@ namespace Passer.Humanoid { AddCharacterColliders(); avatarNeckHeight = GetAvatarNeckHeight(); + if (headTarget.unityXR != null) + headTarget.unityXR.UpdateSensorLocation(); + switch (scaling) { case ScalingType.SetHeightToAvatar: SetTrackingHeightToAvatar();