leeyunjeong010422 / MiniGameProject

0 stars 0 forks source link

[Feat] 랜덤 파티클 날라오기 전에 위치 미리 알려주기 (경고 느낌으로) #28

Closed leeyunjeong010422 closed 1 month ago

leeyunjeong010422 commented 1 month ago

https://github.com/leeyunjeong010422/MiniGameProject/issues/29

위 링크에서 보스 공격 전 "!" 구현할 때 사용했던 코드 사용

private IEnumerator SpawnParticles()
{
    while (true)
    {
        int randomCount = Random.Range(1, 3);

        for (int j = 0; j < randomCount; j++)
        {

            //카메라 뷰포트에서 오른쪽 끝 부분의 월드 좌표(뷰포트 좌표 (1, y, z))
            //카메라 이해: https://ansohxxn.github.io/unitydocs/camera/
            //          : https://m.blog.naver.com/corncho456/221727952827
            Vector2 warningPosition = mainCamera.ViewportToWorldPoint(new Vector2(0.9f, Random.Range(0.2f, 0.8f)));
            warningPosition.y += Random.Range(-spawnArea.y, spawnArea.y); //Y축 범위에서 랜덤하게 위치 설정

            //공격 예정 위치에 경고 이미지 생성
            SoundManager.Instance.PlayWarningSound();
            GameObject warning = CreateWarning(warningPosition);
            yield return StartCoroutine(BlinkEffect(warning));
            Destroy(warning);

            //파티클 생성 (위치: 위에 warningPosition가 발생한 위치보다 조금 더 오른쪽에서 생성)
            Vector2 spawnPosition = mainCamera.ViewportToWorldPoint(new Vector2(1.1f, mainCamera.WorldToViewportPoint(warningPosition).y));
            ParticleSystem newParticle = Instantiate(particle, spawnPosition, Quaternion.identity);
            newParticle.Play();
            activeParticles.Enqueue((newParticle, Time.time)); //생성된 파티클과 생성 시간 추가
        }

        yield return waitForSpawnInterval;
    }
}

달랐던 점은 위치 계산!!