Pv_log

횡스크롤 게임에서 배경화면 반복 쉽게 처리하기 본문

Develop Study/Unity

횡스크롤 게임에서 배경화면 반복 쉽게 처리하기

Priv 2021. 1. 12. 15:10

 


 

 

1. 게임은 트릭

쿠키런을 비롯한 횡스크롤 달리기 게임들은 유독 '게임은 트릭'이라는 말이 자주 떠오르는 장르이다.

무한히 생성되는 오브젝트, 무릎 관절이 걱정되는 주인공 캐릭터, 끝도 없이 스크롤되며 멀미를 절로 유발하는 배경화면까지.

이 장르의 게임은 만들기도 쉽고, 플레이하기도 간단해서 튜토리얼에서 자주 사용되는 장르인 것 같다.

뭐, 아무튼. 이게 중요한 게 아니고.

지금 말하고자 하는 부분은 배경화면을 무한히 스크롤하게 만드는 부분에 대한 것이다.

그것도 Collider를 이용해서 말이지.

 

2. Collider의 사이즈를 가져올 수 있다.

유니티 3년 공부하면서 이건 첨 알았다...

GetComponent를 이용해 Collider를 가져온 뒤, .size를 붙여주면 된다.

repeatWidth = (GetComponent<BoxCollider>().size.x / 2);

위의 예시 코드처럼 작성하면, 사용자가 설정한 BoxCollider의 사이즈를 정확히 두 동강 내준다.
(코드를 보면 알겠지만 세로로 잘라준다.)

저게 왜 필요하냐? 그리고 왜 2를 넣어준 것이냐?

위의 사진을 보면, 배경화면 오브젝트가 2개의 동일한 이미지를 붙여놓은 형태를 띠고 있다.

위의 코드는 저 이미지를 기준으로 작성한 코드여서 2로 나눈 것.

만약 배경화면 오브젝트에 이미지 3개를 붙여둔 상태라면, 당연 3으로 나눠주면 된다.

기초적인(또는 노가다적인) 방법으로는 이미지 1개가 끝나는 지점을 손수 찾아내 그 좌표를 가지고 if문을 돌려야 한다.

그게 싫다면, 배경화면 오브젝트를 Prefab 형식으로 변환해 계속 생성해주던가...
(나는 처음에 이 방법을 사용했다.)

하지만 위의 예시 코드처럼 Collider의 사이즈를 나눠버리는 방식을 사용하면, 위의 두 가지 방법보다 더 간단하면서도 정확하게 배경화면을 반복시킬 수 있다.

 

유니티 Learn 튜토리얼 문서에서 이 방법 처음 알았을 때 나도 모르게 이마를 치고 있었지...

...역시 머리가 좋아야 해.

 


 

Comments