using UnityEngine; public class HapticManager : MonoBehaviour { private static HapticManager _instance; public static HapticManager Instance => _instance; #if !UNITY_EDITOR && UNITY_WEBGL [System.Runtime.InteropServices.DllImport("__Internal")] private static extern bool HapticFeedback(int duration); [System.Runtime.InteropServices.DllImport("__Internal")] private static extern int IsHapticSupported(); #endif private void Awake() { if (_instance != null && _instance != this) { Destroy(gameObject); return; } _instance = this; DontDestroyOnLoad(gameObject); #if !UNITY_EDITOR && UNITY_WEBGL Debug.Log($"Haptic feedback supported: {IsHapticSupported() == 1}"); #endif } public void LightTap() { TriggerHapticFeedback(20); } public void MediumTap() { TriggerHapticFeedback(40); } public void HeavyTap() { TriggerHapticFeedback(80); } private void TriggerHapticFeedback(int duration) { #if !UNITY_EDITOR && UNITY_WEBGL try { if (IsHapticSupported() == 1) { bool success = HapticFeedback(duration); if (success) { Debug.Log($"Haptic feedback triggered: {duration}ms"); } } } catch (System.Exception e) { Debug.LogWarning($"Failed to trigger haptic feedback: {e.Message}"); } #endif } }