From 8263edd59284aba390aca011d25b79efecef4c48 Mon Sep 17 00:00:00 2001 From: pryazha Date: Wed, 2 Jul 2025 08:46:23 -0700 Subject: init --- .../Starter Assets/Scripts/ControllerAnimator.cs | 84 ++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 Assets/Samples/XR Interaction Toolkit/3.1.2/Starter Assets/Scripts/ControllerAnimator.cs (limited to 'Assets/Samples/XR Interaction Toolkit/3.1.2/Starter Assets/Scripts/ControllerAnimator.cs') diff --git a/Assets/Samples/XR Interaction Toolkit/3.1.2/Starter Assets/Scripts/ControllerAnimator.cs b/Assets/Samples/XR Interaction Toolkit/3.1.2/Starter Assets/Scripts/ControllerAnimator.cs new file mode 100644 index 0000000..858f8f2 --- /dev/null +++ b/Assets/Samples/XR Interaction Toolkit/3.1.2/Starter Assets/Scripts/ControllerAnimator.cs @@ -0,0 +1,84 @@ +using UnityEngine.XR.Interaction.Toolkit.Inputs.Readers; + +namespace UnityEngine.XR.Interaction.Toolkit.Samples.StarterAssets +{ + /// + /// Component which reads input values and drives the thumbstick, trigger, and grip transforms + /// to animate a controller model. + /// + public class ControllerAnimator : MonoBehaviour + { + [Header("Thumbstick")] + [SerializeField] + Transform m_ThumbstickTransform; + + [SerializeField] + Vector2 m_StickRotationRange = new Vector2(30f, 30f); + + [SerializeField] + XRInputValueReader m_StickInput = new XRInputValueReader("Thumbstick"); + + [Header("Trigger")] + [SerializeField] + Transform m_TriggerTransform; + + [SerializeField] + Vector2 m_TriggerXAxisRotationRange = new Vector2(0f, -15f); + + [SerializeField] + XRInputValueReader m_TriggerInput = new XRInputValueReader("Trigger"); + + [Header("Grip")] + [SerializeField] + Transform m_GripTransform; + + [SerializeField] + Vector2 m_GripRightRange = new Vector2(-0.0125f, -0.011f); + + [SerializeField] + XRInputValueReader m_GripInput = new XRInputValueReader("Grip"); + + void OnEnable() + { + if (m_ThumbstickTransform == null || m_GripTransform == null || m_TriggerTransform == null) + { + enabled = false; + Debug.LogWarning($"Controller Animator component missing references on {gameObject.name}", this); + return; + } + + m_StickInput?.EnableDirectActionIfModeUsed(); + m_TriggerInput?.EnableDirectActionIfModeUsed(); + m_GripInput?.EnableDirectActionIfModeUsed(); + } + + void OnDisable() + { + m_StickInput?.DisableDirectActionIfModeUsed(); + m_TriggerInput?.DisableDirectActionIfModeUsed(); + m_GripInput?.DisableDirectActionIfModeUsed(); + } + + void Update() + { + if (m_StickInput != null) + { + var stickVal = m_StickInput.ReadValue(); + m_ThumbstickTransform.localRotation = Quaternion.Euler(-stickVal.y * m_StickRotationRange.x, 0f, -stickVal.x * m_StickRotationRange.y); + } + + if (m_TriggerInput != null) + { + var triggerVal = m_TriggerInput.ReadValue(); + m_TriggerTransform.localRotation = Quaternion.Euler(Mathf.Lerp(m_TriggerXAxisRotationRange.x, m_TriggerXAxisRotationRange.y, triggerVal), 0f, 0f); + } + + if (m_GripInput != null) + { + var gripVal = m_GripInput.ReadValue(); + var currentPos = m_GripTransform.localPosition; + m_GripTransform.localPosition = new Vector3(Mathf.Lerp(m_GripRightRange.x, m_GripRightRange.y, gripVal), currentPos.y, currentPos.z); + } + } + } +} -- cgit v1.2.3-70-g09d2