using UnityEngine; public class ItemHighlight : MonoBehaviour { [Header("--- 참조 ---")] [SerializeField] private MeshRenderer weaponRenderer; [Header("--- 하이라이트 설정 ---")] [ColorUsage(true, true)] [SerializeField] private Color highlightColor = Color.yellow; [SerializeField] private float blinkSpeed = 2f; [SerializeField] private float minIntensity = 0.5f; [SerializeField] private float maxIntensity = 3.0f; private Material _material; private static readonly int EmissionProperty = Shader.PropertyToID("_EmissionColor"); private void Awake() { if (weaponRenderer == null) weaponRenderer = GetComponentInChildren(); if (weaponRenderer != null) { _material = weaponRenderer.material; _material.EnableKeyword("_EMISSION"); } } // ⭐ [추가] 부모 오브젝트(손)가 바뀌었을 때 실행됩니다. private void OnTransformParentChanged() { // 부모가 없다면 = 바닥에 떨어졌다면 if (transform.parent == null) { this.enabled = true; // 스크립트를 다시 깨웁니다. } } private void Update() { if (_material == null) return; // 누군가 주운 상태(부모가 있음)라면 빛을 끄고 퇴근합니다. if (transform.parent != null) { StopHighlight(); return; } float lerpValue = Mathf.PingPong(Time.time * blinkSpeed, 1f); float intensity = Mathf.Lerp(minIntensity, maxIntensity, lerpValue); _material.SetColor(EmissionProperty, highlightColor * intensity); } public void StopHighlight() { if (_material != null) { _material.SetColor(EmissionProperty, Color.black); this.enabled = false; // Update를 멈춥니다. } } }