EerieVillage/Assets/Scripts/Mechanics/PlayerInvulnerabilityFlash.cs

48 lines
1.5 KiB
C#
Raw Normal View History

using UnityEngine;
namespace Platformer.Mechanics
{
/// <summary>
/// 무적 상태(Health.IsInvulnerable) 동안 SpriteRenderer를 토글하여 깜빡임 시각 피드백 제공.
/// PD 지시 2026-05-07 — 피격 0.5초·부활 2초 무적 시 깜빡거림 의무.
/// PlayerController.Awake에서 자동 부착되므로 Inspector 부착 불요.
/// </summary>
[RequireComponent(typeof(Health))]
public class PlayerInvulnerabilityFlash : MonoBehaviour
{
[Tooltip("깜빡임 토글 간격(초). 0.08~0.12 권장.")]
public float flashInterval = 0.1f;
Health health;
SpriteRenderer spriteRenderer;
float flashTimer;
void Awake()
{
health = GetComponent<Health>();
spriteRenderer = GetComponent<SpriteRenderer>();
if (spriteRenderer == null) spriteRenderer = GetComponentInChildren<SpriteRenderer>();
}
void Update()
{
if (health == null || spriteRenderer == null) return;
if (health.IsInvulnerable)
{
flashTimer -= Time.deltaTime;
if (flashTimer <= 0f)
{
spriteRenderer.enabled = !spriteRenderer.enabled;
flashTimer = flashInterval;
}
}
else
{
spriteRenderer.enabled = true;
flashTimer = 0f;
}
}
}
}