48 lines
1.5 KiB
C#
48 lines
1.5 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|
|
}
|