From 9fe33c1ae076b0f6501619388e6b4cc872b76f80 Mon Sep 17 00:00:00 2001 From: smchoi <ws5260@naver.com> Date: 수, 31 7월 2024 10:37:31 +0900 Subject: [PATCH] BIgUpdate --- Assets/Korail/Scripts/XR/XRLever.cs | 38 ++++++++++++++++++++++++++++++++------ 1 files changed, 32 insertions(+), 6 deletions(-) diff --git a/Assets/Korail/Scripts/XR/XRLever.cs b/Assets/Korail/Scripts/XR/XRLever.cs index c208728..bb7eeac 100644 --- a/Assets/Korail/Scripts/XR/XRLever.cs +++ b/Assets/Korail/Scripts/XR/XRLever.cs @@ -8,6 +8,13 @@ /// </summary> public class XRLever : XRBaseInteractable { + public enum LeverAxis + { + X, + Y, + Z + } + const float k_LeverDeadZone = 0.1f; // Prevents rapid switching between on and off states when right in the middle [SerializeField] @@ -39,6 +46,13 @@ [SerializeField] [Tooltip("Events to trigger when the lever deactivates")] UnityEvent m_OnLeverDeactivate = new UnityEvent(); + + [SerializeField] + LeverAxis m_Axis = LeverAxis.X; + + [SerializeField] + Vector3 m_BaseDirection = new Vector3(0, 90, -90); + IXRSelectInteractor m_Interactor; @@ -159,7 +173,7 @@ { var lookDirection = GetLookDirection(); var lookAngle = Mathf.Atan2(lookDirection.x, lookDirection.y) * Mathf.Rad2Deg; - + Debug.Log("lookAngle : " + lookAngle); if (m_MinAngle < m_MaxAngle) lookAngle = Mathf.Clamp(lookAngle, m_MinAngle, m_MaxAngle); else @@ -209,11 +223,23 @@ void SetHandleAngle(float angle) { - - if (m_Handle != null) - - m_Handle.localRotation = Quaternion.Euler(angle, 90f, -90f); - + + if (m_Handle == null) return; + + if (m_Axis == LeverAxis.X) + { + m_Handle.localRotation = Quaternion.Euler(angle, m_BaseDirection.y, m_BaseDirection.z); + } + else if (m_Axis == LeverAxis.Y) + { + m_Handle.localRotation = Quaternion.Euler(m_BaseDirection.x, angle, m_BaseDirection.z); + } + else + { + m_Handle.localRotation = Quaternion.Euler(m_BaseDirection.x, m_BaseDirection.y, angle); + } + + } void OnDrawGizmosSelected() -- Gitblit v1.8.0