2D 게임에서도 카메라를 따로 세팅을 하면 여러가지 효과를 줄 수 있습니다.

캐릭터 보다 늦게 따라가게 하거나 특정 위치에 있으면 줌인 , 줌아웃 같은 기능들이 들어간 게임들을 볼 수 있는데,

간단하게 구현해 보았습니다.


obj_2dcamera


먼저 게임메이커에서 오브젝트를 하나 생성하여 obj_2dcamera 라는 이름으로 생성을 해주었습니다.(이름은 상관없음)

오브젝트를 더블클릭하여 Add Event 버튼을 눌러 Create 이벤트를 생성하고 변수를 설정합니다.



camera_spd 는 카메라가 움직이는 속도를 제어하기 위해서 생성한 변수 이고 x,y좌표의 경우는 

최초 플레이어의 좌표로 처음 생성될 때

찾아가기 위한 설정이므로 반드시 필요한 변수는 아닙니다.


주의!! : obj_player 는 제가 만들어놓은 캐릭터의 오브젝트이며 각자 만든 이름에 맞게 설정을 해야 이 코드는 작동합니다.


Step Event 설정



스텝 이벤트의 코드 설명을 하자면, 첫줄 부터 4번째 줄까지는 카메라가 플레이어와 접촉하지 않았을시에만 

쫓아가게 하는 코드이며

6~13줄의 부분은 플레이어가 중력을 받으면(제 게임에서) 카메라가 너무 늦게 따라가기 때문에 

이 상황에서만 카메라 속도값을 증가시켜 빨리 쫓아가도록 설정하였습니다.


//줌 인, 아웃

플레이어의 위치가 룸의 윗부분으로 올라가면 줌아웃이 되게 설정하였고 , 줌인 줌아웃을 설정하기 위해서는 

위의 코드 외에도 아래와 같은 Rooms 폴더 위치에 룸을 만들어 설정을 해주어야 합니다.

view_wview[0] 혹은 view_hview 이후 숫자값의 크기만큼 줌인 줌아웃이 진행되며 숫자가 클수록 줌인,줌아웃이 빨라집니다.


Room settings



이때 중요한 세팅은 Enable the use of Views를 체크하고 Visible when room starts 에도 체크를 합니다.

그리고 640 x 480이 게임의해상도를 결정하는 뷰라고 생각하시면 되며 이 크기를 줄이고 늘리고 하기위해 

꼭 필요한 세팅입니다.

이후 , Object following 이라고 써있는 부분에서 아까 생성한 obj_2dcamera를 설정하며

Hbor : 320 Vbor :240 은 해상도의어느 시점부터 화면을 스크롤 할지를 결정하는 값이라 생각하면 됩니다.


당연하겠지만 만들어진 obj_2dcamera를 룸 아무 곳에나 배치를 시켜놓고 플레이를 하면 

정상 작동하는 것을 확인 할 수 있습니다.

BELATED ARTICLES

more