62 lines
1.3 KiB
C#
62 lines
1.3 KiB
C#
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<InputDevice> devices = new List<InputDevice>();
|
|
|
|
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();
|
|
}
|
|
}
|
|
}
|