๊ฐ•์˜๋ณด๊ณ  ๋ฐ๋ฏธ์ง€ ๋ฐ›์„ ๋•Œ ๋น›๋‚˜๊ฒŒ ํ•˜๋Š” ์šฉ๋„๋กœ gui/text shader ๋ฉ”ํ…Œ๋ฆฌ์–ผ ๋งŒ๋“ค๊ณ  ์ฝ”๋“œ๋กœ ๋งž์„ ๋•Œ ๋ฉ”ํ…Œ๋ฆฌ์–ผ ๋ฐ”๊พธ๋Š” ์‹์œผ๋กœ ๊ตฌํ˜„ํ–ˆ๋Š”๋ฐ


์˜์ƒ์ฒ˜๋Ÿผ ํ”Œ๋ ˆ์ด์–ด๋Š” ๊ดœ์ฐฎ์€๋ฐ ์ ์ด ํ”ผํ•ด๋ฅผ ์ž…์€ ๋‹ค์Œ๋ถ€ํ„ฐ ๋ชจ์Šต์ด ์กด๋‚˜ ์ด์ƒํ•ด์ง


vfx์ฝ”๋“œ๋Š” ์ด๋ ‡๊ฒŒ ์ƒ๊ฒผ๋Š”๋ฐ ๋ญ๊ฐ€ ๋ฌธ์ œ์ธ๊ฑฐ์ž„? ์™œ ๋‚˜๋Š” ๊ดœ์ฐฎ์€๋ฐ ์ ๋งŒ ์ €์ง€๋ž„์ธ๊ฑฐ์ง€

public class EntityVFX : MonoBehaviour
{
ย  ย  private SpriteRenderer sr;
ย  ย  [Header("On Damage VFX")]
ย  ย  [SerializeField] private Material onDamageMaterial;
ย  ย  [SerializeField] private float onDamageVFXDuration = .2f;
ย  ย  private Material originMat;
ย  ย  private Coroutine onDmgVfxCO;

ย  ย  private void Awake()
ย  ย  {
ย  ย  ย  ย  sr = GetComponentInChildren<SpriteRenderer>();
ย  ย  ย  ย  originMat = sr.material;
ย  ย  }

ย  ย  public void PlayOnDmgVFX()
ย  ย  {
ย  ย  ย  ย  if(onDmgVfxCO != null)
ย  ย  ย  ย  ย  ย  StopCoroutine(OnDamageVfxCO());
ย  ย  ย  ย  onDmgVfxCO = StartCoroutine(OnDamageVfxCO());
ย  ย  }

ย  ย  private IEnumerator OnDamageVfxCO()
ย  ย  {
ย  ย  ย  ย  sr.material = onDamageMaterial;
ย  ย  ย  ย  yield return new WaitForSeconds(onDamageVFXDuration);
ย  ย  ย  ย  sr.material = originMat;
ย  ย  }
}