using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.XR; public class HandPresence : MonoBehaviour { public InputDeviceCharacteristics controllerCharacteristics; private InputDevice targetDevice; public Animator handAnimator; void Start() { TryInitialize(); } void TryInitialize() { List devices = new List(); InputDevices.GetDevicesWithCharacteristics(controllerCharacteristics, devices); if (devices.Count > 0) { targetDevice = devices[0]; } } void UpdateHandAnimation() { if(targetDevice.TryGetFeatureValue(CommonUsages.trigger, out float triggerValue)) { handAnimator.SetFloat("Trigger", triggerValue); } else { handAnimator.SetFloat("Trigger", 0); } if (targetDevice.TryGetFeatureValue(CommonUsages.grip, out float gripValue)) { handAnimator.SetFloat("Grip", gripValue); } else { handAnimator.SetFloat("Grip", 0); } } // Update is called once per frame void Update() { if(!targetDevice.isValid) { TryInitialize(); } else { UpdateHandAnimation(); } } }