Learning
When: 1학년 6월 9일
How:

2D 게임을 만들고 있었는데 화면 비율을 정사각형으로 하고 카메라가 위아래로 움직이는, 맵 전체로 보면 모바일과 비슷한 비율을 하고 있었습니다. 가로가 짧기 때문에 플레이어가 벽에 부딪힐 일이 많았는데, 반작용만으로 움직이는 게임의 특성상, 벽에 부딪히면 복귀하기 위해 대포를 돌리고, 쏘는 귀찮은 일이 발생했습니다. 이것이 플레이어에게 나쁜 경험이 될 것 같다고 생각하여, 예전에 '점핑 닌자고'에서 본 화면을 넘어가면 반대쪽 화면에서 나타나는 것을 구현해 보고 싶었습니다. 그런데 그냥 순간이동을 하면 퀄리티가 떨어져 보일 것 같아서 자연스럽게 대포가 반쯤 넘어가면 반대쪽에서도 반쯤 튀어나오게 해보는 것을 시도하였습니다.
Understanding:
- 첫 번째 시도: 오브젝트 반으로 나누기
처음에는 스프라이트를 반으로 나눠서 반쯤 넘어가면 반만 반대쪽으로 이동시키고 반대쪽 스프라이트는 남게 만들었습니다. 제가 말한 대로 만들긴 했지만, 대포가 조금이라도 돌아가면 상당히 부자연스러운 연출이 되었기 때문에 바로 아이디어를 바꾸게 되었습니다. - 두 번째 시도: 오브젝트 반의 반으로 나누기
좀 어이없을지도 모르겠지만, 2개는 너무 극단적이기 때문에 부자연스럽다고 생각한 것 같습니다. 변명을 해보자면 선생님께 여쭤보았을 때 반으로 나눠야 할 것 같다고 말씀해 주셨기 때문에 (제가 잘못 들은 듯합니다) 오브젝트를 나누는 것에 너무 깊게 꽂혀버렸습니다. 당연히 모두 같은 축을 기준으로 돌면서 일정한 기준을 넘어가면 혼자서 정확한 위치로 이동시키는 것은 머리 아프고, 만든다고 해도 자연스러울 리가 없었습니다. - 세 번째 시도: 오브젝트 복제하기
드디어 오브젝트를 2개 이상 사용하는 단계에 돌입하였습니다. 무려 오브젝트를 겹치고 있다가 일정 기준을 넘어가면 하나의 오브젝트를 반대쪽으로 넘겨서 아주 자연스럽게 1/3이 들어가면 반대쪽으로 2/3이 나오는 연출에 성공하였습니다. 하지만 저는 제가 1달 후에 코드를 최적화해야 할지 몰랐습니다. - 네 번째 시도: 오브젝트 3개 만들기
처음에는 프로토타입만 일단 만들어 놓았기 때문에 자연스러운 워프 말고는 되는 게 없었습니다. 이렇게 한다면 대포가 총을 쏠 때 2개를 발사하지 않으면 서로 반반씩 보일 때 한쪽만 대포를 발사하게 되고, 대포에서 연기가 나오는 파티클을 만들 때도 2개를 동시에 Play해야 합니다. 파티클은 그렇다고 쳐도 총알을 동시에 2개나 발사하면 무조건 나중에 버그가 생길 것을 알았기에 서로 떨어져 있을 때만 한쪽에서 총을 발사하고, 아닐 때는 총을 발사하지 않는 코드를 짰어야 했는데, 저는 그것이 귀찮고 어차피 스파게티 코드로 짜놓은 제 코드를 바꿔야 했기 때문에 새로운 방법을 시도하게 되었습니다. 바로 3개를 만들어서 사용하는 것입니다. 말로 설명하기 어렵기 때문에 gif로 보여드리겠습니다.

처음 보면 이게 무슨 사진인지 모를 수 있는데, 가운데에 메인 오브젝트 하나를 두고, 좌·우에 오브젝트 2개를 놓아서 자연스럽게 워프되는 것처럼 보이는 것입니다. 그리고 계속 한 방향으로 워프할 수도 있기 때문에 어느 정도 메인 오브젝트가 카메라를 벗어나면 반대쪽으로 일정 x좌표를 이동하여 처음 상태로 되돌렸습니다(gif 마지막 부분을 보면 알 수 있습니다).
Result: 이런 식으로 워프를 하는 게 최적의 방법은 아니겠지만, 제가 원하던 것을 모두 만족하기 때문에 여기에서 끝냈습니다. 아니겠지만 혹시 참고하신다면, 아직 초보이기 때문에 아이디어만 얻는 방식으로 참고하시는 것이 좋아 보입니다.
'UnityEngine' 카테고리의 다른 글
| [Unity] 프로퍼티 직렬화하기 (0) | 2025.06.11 |
|---|---|
| [Unity] PlayerPrefs (0) | 2025.06.10 |
| [Unity] Input Action 사용 (0) | 2025.06.06 |
| [Unity] 레이아웃 (0) | 2025.06.05 |
| [Unity] 여러가지 반복문 (1) | 2025.06.04 |