49 lines
1.1 KiB
C#
49 lines
1.1 KiB
C#
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
using System.Collections;
|
|
|
|
public class PlayerHitEffectController : MonoBehaviour
|
|
{
|
|
[SerializeField] private Image hitFlashImage;
|
|
private float flashDuration = 0.7f;
|
|
private Color flashColor = new Color(1, 0, 0, 0.7f); // 반투명 빨간색
|
|
|
|
private Coroutine flashCoroutine;
|
|
|
|
private void Start()
|
|
{
|
|
hitFlashImage.color = Color.clear; // 처음에는 투명함
|
|
}
|
|
|
|
public void PlayHitEffect()
|
|
{
|
|
if (flashCoroutine != null)
|
|
{
|
|
StopCoroutine(flashCoroutine);
|
|
}
|
|
flashCoroutine = StartCoroutine(FlashRoutine());
|
|
}
|
|
|
|
private IEnumerator FlashRoutine()
|
|
{
|
|
// 일단 바로 최대 알파로 세팅
|
|
hitFlashImage.color = flashColor;
|
|
|
|
float timer = 0f;
|
|
while (timer < flashDuration)
|
|
{
|
|
timer += Time.deltaTime;
|
|
|
|
// 알파만 줄이기
|
|
Color c = flashColor;
|
|
c.a = Mathf.Lerp(flashColor.a, 0, timer / flashDuration);
|
|
hitFlashImage.color = c;
|
|
|
|
yield return null;
|
|
}
|
|
|
|
hitFlashImage.color = Color.clear;
|
|
}
|
|
|
|
}
|