Unity 2D RogueLike

장현태입니다·2025년 7월 1일

레이저 수정사항

레이저 생성을 lineRenderer말고 Raycast는 그대로 사용하고 파티클을 사용해서 화면에 출력하기로 결정해서 코드 수정이 이뤄졌다.

공격 쿨타임과 파티클 쿨타임에서 매번 생성되는 오브젝트의 쿨타임을 Time.deltaTime을 통해 bool값을 설정해주었다. 성능상 좋지 않을수 있지만 coroutine을 사용시 update에서 coroutine null 처리가 잘 되지않아서 따로 설정 해주었다.

주석처리 부분은 LineRenderer를 사용했던 부분이라 보지않아도 된다.
여기서 각각의 #region을 살펴 보자면 처음 region부분에서 파티클 오브젝트의 메인 부분을 main변수에 할당하고 할당 된 main변수의 시작 사이즈와 시작 회전반경을 Atan을 통해 설정 해주었는데 이건 틀린 설정이다

  • 이유 : 말그대로 start할 때 생성되는 부분이므로 시작해보면 파티클이 끊기면서 생성됨 끊기는 현상 : 해당 부분이 바뀌는 반경마다 새로 생성되는 현상인것을 볼 수 있다.

두번째 region을 살펴보자면 electObj의 위치를 플레이어로, 회전각을 받아와서 z축의 회전을 해야하기 때문에 Quaternion.Euler(0,0,angle)로 설정 해주었고, 그 Euler를 localRotation에 할당해주었다. 마지막으로 localScale의 경우 y축은 원래 파티클 크기 그대로를 원했기 떄문에 현재 오브젝트의 크기를 지정해주었고, x의 경우 마우스의 위치.x를 절댓값을 통해 (-)가 될경우 반대로 번개가 되는 현상을 방지하고자 절댓값을 넣게 되었다

  • Atan2 : y/x를 통해 탄젠트 값에서 각도를 받아오는데 이 때 받아오는 값을 마우스 방향 directionNormal로 해주었기 때문에 우리가 원하는 마우스 위치에 따른 각을 받아온다

  • Rad2Deg : 각도를 라디안으로 가져와서 계상해서 float에 할당해주어서 Quternion.Euler에 사용했다.


TitleScene 만들기

BaseUI

딕셔너리 형태로 Dictionary<string,GameObject>, Dictionary<string,Component>를 통해 오브젝트에 접근하거나 컴퍼넌트에 접근해서 해당 ui에 접근할것이다.

두번째는 팝업을 통해 다음 ui접을을 할 때 Resources를 통해 접근하기 위해 Resoureces의 폴더에 해당 오브젝트가 존재해야한다.

PopUpCanvas

PopupCanvas에서 stack을 통해 넣을 때는 현재 최상위 BaseUI오브젝트를 SetActive(false)후 삽입한다, RemoveUI를 실행할 때는 제일 위에 있는 BaseUI 오브젝트를 확인 후 삭제하고 삭제 후 Peek를 한번 더 실행하여 오브젝트를 활성화 시켜준다

다음과 같이 노가다를 통해 UI를 생성할 수 있다.

0개의 댓글