63 lines
1.9 KiB
C#
63 lines
1.9 KiB
C#
|
|
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<MeshRenderer>();
|
|||
|
|
|
|||
|
|
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를 멈춥니다.
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|