5. 몬스터 피격 이펙트 출력 하기
작업 요약
Effect.cs와 EffectManager.cs 생성함.
이펙트로 사용할 파티클을 만듬.
Effect에 파티클 프리팹 연결.
리소스 공유
Eff_Heal.unitypackage
이펙트 만드는법 링크
eff_heal에 Effect를 붙여주자.
EffectManager에 Effect Prefab에 heal을 연결해준다.
이제 hit 당했을때 이펙트 나오도록 코드 처리.
코드 작성
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | using UnityEngine; public class Effect : MonoBehaviour { public void Init(Vector3 startPos) { transform.position = startPos; gameObject.SetActive(true); Invoke("Despawn", 1); } void Despawn() { gameObject.SetActive(false); } } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | using System.Collections.Generic; using UnityEngine; public class EffectManager : MonoBehaviour { public static EffectManager Inst { get; private set; } public Effect EffectPrefab; List<Effect> effects = new List<Effect>(); void Awake() { Inst = this; } public static Effect PlayEffect(Vector3 startPos) { var effect = FindNoUseEffect(); effect.Init(startPos); return effect; } static Effect CreateEffect() { var effect = Instantiate(Inst.EffectPrefab); effect.name += Inst.effects.Count; effect.transform.parent = Inst.transform; Inst.effects.Add(effect); return effect; } static Effect FindNoUseEffect() { for (int i = 0; i < Inst.effects.Count; i++) { if (Inst.effects[i].gameObject.activeSelf) continue; return Inst.effects[i]; } return CreateEffect(); } } | cs |
Enemy 클래스에 Hit 처리시 이펙트가 생성되게 호출하자.
EffectManager.PlayEffect(transform.position);
결과
이펙트가 잘 안 보이는데 색을 변경할걸 그랬음.
하지만 귀찮아서 안 함.
기본적인 타워 디펜스 기능들을 만들어 봤다.
자료 파일
5.몬스터 피격 이펙트 출력.unitypackage