728x90
반응형
[Header("[Click Particle]")]
public GameObject[] clickParticles;
private RectTransform[] _particleRects;
private Canvas _canvas;
private int _idx;
private void InitClickParticle()
{
_particleRects = new RectTransform[clickParticles.Length];
for (int i = 0; i < clickParticles.Length; i++)
{
_particleRects[i] = clickParticles[i].GetComponent<RectTransform>();
}
_canvas = GetComponent<Canvas>();
_idx = 0;
}
private void OnUpdateClickParticle()
{
if (Input.GetMouseButtonDown(0))
{
_particleRects[_idx].gameObject.SetActive(false);
Vector2 startPos = Input.mousePosition / _canvas.scaleFactor;
_particleRects[_idx].anchoredPosition = startPos;
_particleRects[_idx].gameObject.SetActive(true);
_idx++;
}
if (_idx >= clickParticles.Length)
_idx = 0;
}
처음엔 한개로 시작해서 ParticlePool을 만들어 동적으로 생성하고 관리하려했는데
이펙트 재생시간 자체가 짧고 중간에 사라져도 티도 안나서 그냥 5개정도로 고정해서 사용했다.
이펙트는 particle system을 통해 재생이 끝나면 오브젝트를 끄고
idx도 돌려쓰는게 아니라 0번부터 재생중이지 않은 particle이 있으면 그걸 재생시키고 하는 방식이였는데 수정했다.
728x90
반응형
'프로그래밍 > 유니티' 카테고리의 다른 글
[유니티] Curved Text (0) | 2022.08.29 |
---|---|
[유니티] 슬라이더 값이 0인데 이미지가 남아있을 때 (0) | 2022.08.04 |
[유니티] Hierarchy의 오브젝트 Path복사 (0) | 2022.03.09 |
[유니티] MonoSingleton (0) | 2022.01.14 |
[유니티] 롤 골드그래프를 만들어보자(4) - 최종 코드 (0) | 2021.08.12 |