Ejemplo n.º 1
0
    // 배열에 있는 파티클들을 구분하기 위해 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);
    }
Ejemplo n.º 2
0
    // 이펙트를 일정 시간동안만 반복
    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);
    }