본문 바로가기
GameMaker강좌[GMS2]/DnD강좌-게임

[게임메이커 강좌-DnD][GMS2]간단한 운석 피하기게임 만들기-3 : 플레이어

by 타락카얀 2021. 2. 14.
728x90

 

 

GAME MAKER 강좌

 

 

KAYAN


 

 

 

 

 

◈ 플레이어 만들기(obj_player)

 

 

먼저 플레이어부터 만들어 봅시다.

플레이어 이미지를 에셋탭의 스프라이트 폴더에 스프라이트 이미지로 추가합니다.

강좌에서는 1장의 이미지를 추가하겠습니다.

 

(▲ 플레이어 이미지)

 

그리고 이미지의 중심점을 가운데로 맞춥니다.

충돌 마스크 설정을 눌러 어디까지 다른 오브젝트와 충돌을 감지가능한 범위인지를 지정합니다.

 

※ 충돌 마스크 설정을 누르면 이미지 안에 어디까지가 충돌 범위인지 검은색 반투명 형태로 볼 수 있습니다.

 

(▲ 충돌 마스크 설정)

 

다음은 오브젝트를 추가합니다.

오브젝트의 이름은 다른 곳에서 참조하기 쉬운 이름으로 짓는 것이 좋습니다.

강좌에서는 간단하게 obj_player로 짓겠습니다.

 

(▲ 플레이어 오브젝트)

 

이제 플레이어를 이동시키는 이벤트를 작성해야 합니다.

먼저 왼쪽 키부터 작성해봅시다.

그리고 오브젝트의 Event 버튼을 누릅니다.

 

(▲ Events)

 

이벤트 창이 뜨면 [Add Event] 버튼을 누르면 사용할 수 있는 이벤트 메뉴가 활성화됩니다.

 

(▲ Events)

 

우리는 왼쪽 키 이벤트가 필요하겠지요.

Key Down 이벤트왼쪽 키를 선택하여 키 이벤트를 추가합니다.

 

[참고]

Key Down : 키를 누르고 있을 때 (연속성. 키를 계속 누른 상태가 필요할 때 사용)

key Pressed : 키를 눌렀을 때(일회성. 키를 눌렀을 때만 1회 실행)

key Up : 키를 눌렀다 떼었을 때(일회성. 키를 눌렀다 떼었을 때만 1회 실행)

※ 플레이어의 이동은 키를 누르면 연속으로 이동시켜야 하므로 Key Down 이벤트가 적합합니다.

 

왼쪽 키 이벤트Movement[Jump To Point] 액션을 추가합니다.

게임메이커의 좌표는 아래와 같습니다.

 

(▲ 좌표)

 

현재 (x, y) 기준으로 왼쪽은 -x, 오른쪽은 +x 입니다.

위쪽은 -y, +y가 됩니다.

예를 들어 -5의 속도로 왼쪽으로 이동시킨다면, 아래와 같이 x축을 기반으로 설정하면 됩니다.

 

(▲ 왼쪽 키 이벤트)

 

왼쪽으로 더 빨리 이동시키고 싶다면 더 낮은 값으로 설정하면 됩니다.

그리고 [Relative] 를 체크하도록 합니다. [Relative] 는 (x, y)좌표 기준의 상대값으로 처리할 때 사용합니다.

[Relative] 를 체크해제하면 룸의 절대값으로 처리합니다.

 

왼쪽 키 이벤트가 끝났습니다. 간단하죠.

오른쪽 키 이벤트를 추가하고, 이번엔 x 값을 반대로 +5 값으로 설정합시다.

 

(▲ 오른쪽 키 이벤트)

 

이렇게 하면 왼쪽으로 이동하는 속도와 같은 속도로 오른쪽으로 이동하게 됩니다.

 

이번에는 위쪽 키도 설정해봅시다.

위쪽의 수직방향은 y축을 기반으로 합니다. 따라서 -5 를 입력하면 위로 이동하게 되겠죠.

 

(▲ 위쪽 키 이벤트)

 

마지막으로 아래쪽 키를 설정해봅시다.

아래쪽은 위쪽과 마찬가지로 y축을 기반으로 합니다. 따라서 +5 를 입력하면 아래로 이동하게 되겠죠.

 

(▲ 위쪽 키 이벤트)

 

이동 설정이 간단하게 끝났습니다. 뭐~ 별거 없네요.

 

하지만 이제부터 시작입니다.

 

 

 

 

 

◈ 테스트

 

룸은 프로젝트 초반에 룸 폴더에 미리 생성되어있을 겁니다.

만약 없다면 새로 생성합시다.

그리고 룸을 하나 더블 클릭하고, 룸을 편집하도록 합니다.

Properties의 룸의 크기를 지정해줍니다.

강좌에서는 화면의 크기를 640 x 480크기로 지정할 것입니다.

따라서 가로 640, 세로 480 를 지정합니다.

 

(▲ 룸)

 

다음은 플레이어를 룸에 배치하도록 합시다ㅏ.

인스턴스 레이어를 선택하고, 플레이어 오브젝트를 드래그하여 룸에 배치하도록 합니다.

 

(▲ 룸에 플레이어 오브젝트를 배치)

 

※ [참고] 단축키 [Alt]+[마우스 왼쪽버튼] : 오브젝트가 선택된 상태에서 키보드 [Alt]키를 누른 채, 룸에 마우스 왼쪽 키를

누르면 선택된 오브젝트를 배치할 수 있습니다.

 

하지만, 룸에 아무 것도 없으니 허전하죠. 배경이라도 배치하도록 합시다.

강좌에서는 아래와 같은 이미지를 배경으로 배치하겠습니다.

 

(▲ 배경으로 사용할 스프라이트 이미지)

 

그리고 다시 룸으로 돌아와서 배경레이어를 선택하고, 배경 레이어 Properties 에 배경이미지를 지정해줍니다.

 

(▲ 짜잔~ 배경이 표시되었습니다.)

 

음. 밋밋하지만 그냥 이대로 진행하죠.

 

Run을 클릭하여 게임을 테스트합니다.

 

테스트하게 되면 플레이어가 룸 안에서 이동하지만, 룸 밖으로도 나가게 될 겁니다.

플레이어가 룸 안에서만 이동하도록 만들어 봅시다.

 

플레이어 오브젝트에 End Step 이벤트를 추가하고, Instances[Set Instance Variable] 액션을 추가합니다.

여기서 플레이어의 현재 좌표 (x, y)값을 제한 할 것이므로 액션 앞의 (+)버튼을 눌러 2개로 만듭니다.

그리고 아래와 같이, 각 변수(Variable)에 x좌표와 y좌표를 선택하고 clamp 함수를 사용하여 현재 좌표를

제한하도록 합니다.

 

(▲ 현재좌표 제한)

 

y 좌표의 경우 룸의 x축으로 (16) ~ (룸의 너비-16) 사이만 이동할 수 있게 되고, y 좌표의 경우 룸의 y축으로

(16) ~ (룸의 높이-16) 사이만 이동할 수 있게 됩니다.

잘 작동하는지 다시 테스트합니다.

 

※ [참고]

◎ room_width : 현재 룸의 너비

◎ room_width : 현재 룸의 높이

◎ clamp(val, min, max) : 변수를 최소값 ~ 최대값 사이의 값으로 제한 할 때 사용합니다.

 

 

 

- 계속 -

 

300x250

댓글