Files
WhaleAdventure_VR/Assets/My project/Fishing Scripts/UI/FishingHapticManager.cs
skrwns304@gmail.com b1e85a5b89 2026-06-19 UI, UI로직
2026-06-19 14:27:40 +09:00

54 lines
1.3 KiB
C#

using UnityEngine;
using UnityEngine.XR;
public class FishingHapticManager : MonoBehaviour
{
[Header("Haptic Target")]
[SerializeField] private XRNode targetHand = XRNode.RightHand;
[Header("Haptic Settings")]
[SerializeField] private bool useHaptic = true;
[SerializeField] private float perfectAmplitude = 1f;
[SerializeField] private float perfectDuration = 0.2f;
[SerializeField] private float goodAmplitude = 0.5f;
[SerializeField] private float goodDuration = 0.1f;
[SerializeField] private float missAmplitude = 0.2f;
[SerializeField] private float missDuration = 0.05f;
private void SendHaptic(float amplitude, float duration)
{
if (!useHaptic)
return;
InputDevice device = InputDevices.GetDeviceAtXRNode(targetHand);
if (!device.isValid)
return;
if (device.TryGetHapticCapabilities(out HapticCapabilities capabilities))
{
if (!capabilities.supportsImpulse)
return;
}
device.SendHapticImpulse(0u, Mathf.Clamp01(amplitude), duration);
}
public void Perfect()
{
SendHaptic(perfectAmplitude, perfectDuration);
}
public void Good()
{
SendHaptic(goodAmplitude, goodDuration);
}
public void Miss()
{
SendHaptic(missAmplitude, missDuration);
}
}