// 배열에 있는 파티클들을 구분하기 위해 Enum 타입으로 인자를 받음 public IEnumerator PlayParticle(Enum.Particle particleType, Vector3 pos) { ParticleSystem particleToPlay = particlePool[(int)particleType].getAvailableParticle(); if (particleToPlay != null) { particleToPlay.gameObject.SetActive(true); // 파티클이 실행중이면 실행을 멈추고 if (particleToPlay.isPlaying) { particleToPlay.Stop(); } particleToPlay.transform.position = pos; particleToPlay.Play(); } yield return(new WaitForSeconds(1f)); // 1초 뒤에 이펙트 상태를 false로 바꿈 particleToPlay.Stop(); particleToPlay.gameObject.SetActive(false); }
// 이펙트를 일정 시간동안만 반복 public IEnumerator PlayForNSeconds(Enum.Particle particleType, Vector3 pos, float time) { ParticleSystem particleToPlay = particlePool[(int)particleType].getAvailableParticle(); // 종료될떄까지 이펙트가 캐릭터를 따라다니게 if (particleToPlay != null) { particleToPlay.gameObject.SetActive(true); // 파티클이 실행중이면 실행을 멈추고 if (particleToPlay.isPlaying) { particleToPlay.Stop(); } // 이펙트가 플레이어의 위치를 따라다니도록 함 StartCoroutine("FollowingPlayer", particleToPlay); particleToPlay.Play(); } yield return(new WaitForSeconds(time)); particleToPlay.Stop(); particleToPlay.gameObject.SetActive(false); }