유니티 방치형 프로젝트 - 아이템 획득 (이펙트) #2

반응형

개요

아래와 같이 포물선이 떨어지는 위치에 이펙트, 텍스트 등이 보이도록 추가 작업을 해서 아이템을 획득한 것처럼 보이게 연출하고자 한다.

 

커밋 b4bf06e24fe4174a0daa2e8c8b43078fde75852b

 

일전에 미리 포물선 이동하는 오브젝트를 구현하였으니 참고.

오브젝트 포물선 형태로 이동 구현 게시글 링크 

 

유니티 방치형 프로젝트 - 아이템 획득 (포물선) #1

커밋 : 46abea94dc2a9d687badd7433e5bebed7c132341using System.Collections;using System.Collections.Generic;using UnityEngine;public class Item_Obj : MonoBehaviour{ [SerializeField] float firingAngle = 45.0f; // 발사 각도 (기본값 45도) [SerializeFie

cherry22.tistory.com

추가 작업 전 기존 로직 설명

포물선 형태로 뻗어가는 노란 오브젝트는 플레이어가 몬스터를 처치 했을 때 Monster 스크립트에서 GetDamage 메서드에서 아래의 for문이 실행되면서 시작되는데.

 

보면 Pooling_Obj를 통해 value를 가져온 것을 볼 수 있는데 이건 큐에서 가져온 것이며 이 value에  포물선 이동 로직이 담겨있는 것이라고 볼 수 있다 그래서 Init 메서드를 살펴 보면

 

포물선 이동 코루틴 실행

몬스터의 위치 값 pos를 Init에서 받아서 transform,position으로 몬스터가 죽은 위치에서 SimulatorProjectile 코루틴이 실행되도록 하며 TargetPos는 몬스터가 죽은 위치로 부터 랜덤한 방향에 대한 Vector3이다. 이 코루틴은 포물선을 그리며 아이템이 떨어지는 듯한 효과 구현이 되어있습니다.

 

포물선 운동 종료 후 추가 행동 (텍스트, 이펙트 연출)

아래 코루틴 코드는 포물선 운동이며 while문 종료 후 raritycheck 함수를 호출하여 추가적인 이펙트와 텍스트가 나타나도

록 하였습니다. (포물선 운동 코드 분석은 다른 글에서 이미 하였으니 참고)

 

RarityCheck() 메서드 분석

이 함수 부터는 추가적으로 작성한 코드에 대한 설명 입니다.

포물선이 떨어진 위치에 아이템 등급에 따른 파티클 오브젝트와 텍스트가 보이게 할 것입니다.

 

가장 먼저 회전값을 초기화 합니다.

 

RarityCheck에서 transform의 회전을 0 0 0으로 으로 세팅하지 않으면 이전 코루틴에서 회전해 버린 값이 그대로 이써서 아래와 같이  item_Rect 오브젝트에 회전이 적용 되는 문제가 있다

raritysArr는 위 gif를 보면 포물선이 떨어지는 위치에 빛나는 이펙이 색깔별로 보일 것이다 그것들이 raritysArr에 들어가 있다 우선 등급별 확률을 아직 적용한 것이 아니기에 그냥 랜덤으로 나타나게 하였고 아래 코드는 그냥 활성화 하는 코드이다.

 

raritysArr[(int)rarity].SetActive(true);

 

 

아래 코드는 텍스트 오브젝트의 부모를 캔버스 부모로 설젇하는 것이다

당연하다 텍스트 컴포넌트는 캔버스 자식일 때 화면에 보이기 떄문이다 (나중에 원래 부모로 돌아오는 코드 있음)

        itemTextRect.gameObject.SetActive(true);
        itemTextRect.parent = Base_Canvas.instance.HolderLayer(2);

 

랜덤으로 선택한 rare 값을 switch문에 넘겨서 일치하는 color값을 반환 받는다.

 

마지막으로 LootItem 코루틴이 실행되면 등급 이펙트가 SetActive false 처리 되고 

캔버스로 옮겨놨던 텍스트를 원래 부모로 설정하고 아이템 획득처럼 보이게하는 lootParticle을 실행한다 . 
참고로 파티클 오브젝트를 비활성화 해놓고 아래처럼 따로 켜야 ParticleStstem을 참조하는 변수가 있을 때 에러가 나지 않는다.

반응형