using UnityEngine; public class PlayerInteraction : MonoBehaviour { [Header("--- 설정 ---")] [SerializeField] private float interactRange = 3f; [SerializeField] private LayerMask itemLayer; [SerializeField] private Transform handSlot; [SerializeField] private Stats playerStats; private EquippableItem _currentWeapon; public EquippableItem CurrentWeapon => _currentWeapon; public void TryInteract() { Collider[] hits = Physics.OverlapSphere(transform.position, interactRange, itemLayer); foreach (var hit in hits) { // 1. 무기 상호작용 if (hit.TryGetComponent(out var item)) { if (playerStats.Strength >= item.Config.RequiredStrength) { EquipWeapon(item); break; } else { // ⭐ [핵심 수정] 힘이 부족하면 카메라를 흔듭니다! CinemachineShake.Instance?.ShakeNoNo(); Debug.Log($"힘 부족! 필요: {item.Config.RequiredStrength}, 현재: {playerStats.Strength}"); continue; } } // 2. 포션 상호작용 if (hit.TryGetComponent(out var potion)) { potion.Use(GetComponent()); break; } // 3. 제단 상호작용 if (hit.TryGetComponent(out var altar)) { altar.Use(GetComponent()); break; } } } private void EquipWeapon(EquippableItem item) { if (_currentWeapon != null) _currentWeapon.OnDropped(transform.forward); _currentWeapon = item; _currentWeapon.OnPickedUp(handSlot); playerStats.UpdateWeaponWeight(item.Config.RequiredStrength); } public void ClearCurrentWeapon() => _currentWeapon = null; }