2026-06-19 UI, UI로직
This commit is contained in:
54
Assets/My project/RhythmGame/Scripts/RhythmHapticManager.cs
Normal file
54
Assets/My project/RhythmGame/Scripts/RhythmHapticManager.cs
Normal file
@@ -0,0 +1,54 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.XR;
|
||||
|
||||
public class RhythmHapticManager : MonoBehaviour
|
||||
{
|
||||
[Header("Haptic Target")]
|
||||
[SerializeField] private XRNode targetHand = XRNode.RightHand;
|
||||
|
||||
[Header("Haptic Settings")]
|
||||
[SerializeField] private bool useHaptic = true;
|
||||
|
||||
[SerializeField] private float perfectAmplitude = 0.85f;
|
||||
[SerializeField] private float perfectDuration = 0.12f;
|
||||
|
||||
[SerializeField] private float goodAmplitude = 0.5f;
|
||||
[SerializeField] private float goodDuration = 0.08f;
|
||||
|
||||
[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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user