본문 바로가기
GameMaker강좌[GM8]/액션게임강좌

[게임메이커강좌-플랫폼]간단한 플래폼게임 만들기-5-파트1-더블 점프

by 타락카얀 2013. 9. 26.
728x90



GAME MAKER 강좌



KAYAN








이번 강좌에선 강좌4 에서 만들었던 게임을 토대로 더블 점프를 만들어 보도록 해요.



(▲더블 점프)










◈ 더블 점프 만들기(obj_player)



더블 점프하는 방법에 대해 알아봅시다.



(▲1차 점프)


보통 점프를 하게 되면 1번 점프를 하게 됩니다.
그럼 공중에서 점프 설정을 어떻게 해야 2번 점프가 될까요.
이것은 의외로 간단합니다.

1차 점프는 이렇지요.



(▲1차 점프)


이미 이전 강좌에서 해보셨을 겁니다.
플레이어 아래에 Solid오브젝트가 있을 경우에만 vspeed를 음수값으로 하여 점프를 하게 되지요.



(▲점프 설정)


하지만 이 설정만으로 2차 점프는 불가능합니다.
그럼 어떻게 해야할까요?
이것은 변수 하나를 두고, 스위치 형식으로 설정하면 간단하게 해결할 수 있습니다.
다만, 이전에는 키보드 키를 계속 눌러도 문제가 없었지만, 더블 점프를 위해선 키 이벤트를 1번씩

눌렀을 때만 작동되게 해야합니다.



(▲2차 점프)


그러니까 1차 점프할때는 Solid 오브젝트가 아래에 있을때, 1차 점프를 가능하게 합니다.
이때는 작동 전에는 스위치가 0이어야하고, 점프 후에는 스위치를 1로 만듭니다.
즉, 스위치가 0일때, 그리고 Solid가 아래에 있을때 1차 점프를 한다는 것입니다.

다음에 2차 점프때는 스위치가 1일때 작동해야합니다.
이때 키를 누르면 점프를 하게 되고 다시 스위치를 0으로 만듭니다.

이제 2차 점프가 끝나고, 땅에 닿아야만 다시 점프를 뛸 수 있게 되는 것입니다.
응용한다면 3차, 4차 점프를 뛸 수 있게 말들 수 있을 겁니다.

이것을 토대로 이벤트를 작성해보도록 합시다.

먼저 플레이어 오브젝트(obj_player)Create이벤트에 더블점프 체크할 변수를 선언하도록 합시다.



(▲더블 점프 체크 변수)


강좌에선 d_jump로 선언하도록 하겠습니다.


 

     ★ obj_player - Create 이벤트

     //Set Variable 액션

     variable : d_jump
     value : 0



다음은 점프키 Space키누르고 있을때(Keyboard)가 아닌, 눌렀을때 이벤트(Key press)

변경합니다.
그리고 ControlVariablesTest Variable 액션을 이용해 스위치 변수가 0일때 1차 점프가능

하게 만듭니다.


(▲ 조건문 추가)



     ★ obj_player - [Space]키 press 이벤트

     //Test Variable 액션

     variable : d_jump
     value : 0
     operation : equal to



다음은 Start 블럭을 추가하고, ControlQuestionsCheck Empty 액션을 추가해

Solid오브젝트가 아래에 있을 경우의 조건문을 추가하도록 합니다.



(▲ Solid 조건문 추가. 빈 공간이 아닐 경우)



     ★ obj_player - [Space]키 press 이벤트

     //Check Empty 액션

     x : 0
     y : 1
     objects : Only solid

     [V]Relative         [V]NOT



이제 1차 점프를 뛰어야 합니다.



(▲ 1차 점프)


MoveMoveSpeed Vertical 액션을 추가하고, 점프를 설정합니다.



     ★ obj_player - [Space]키 press 이벤트

     //Speed Vertical 액션

     vert. speed : -6



ControlVariablesSet Variable 액션을 추가하고, 스위치를 1로 만들어 2차 점프를 가능하게

합니다.



     ★ obj_player - [Space]키 press 이벤트

     //Set Variable 액션

     variable : d_jump
     value : 1



다음은 End 블럭으로 닫고, 스위치 반대 값의 조건문으로 설정하기 위해

ControlOtherElse액션을 삽입합니다.



(▲Else 조건문. 2차 점프)


그리고 MoveMoveSpeed Vertical 액션을 추가하고, 2차 점프를 설정합니다.



(▲Else 조건문. 2차 점프 설정)



     ★ obj_player - [Space]키 press 이벤트

     //Speed Vertical 액션

     vert. speed : -6



ControlVariablesSet Variable 액션을 추가하고, 스위치를 0로 만들어 1차 점프를 할 수 있도록 되돌립니다.



     ★ obj_player - [Space]키 press 이벤트

     //Set Variable 액션

     variable : d_jump
     value : 0



여기까지 하면 더블점프가 적용됩니다.
하지만 2차 점프전에 바닥에 닿았을 때, 스위치를 0으로 만들어야 다시 제대로 점프를 하겠지요.
플레이어 오브젝트(obj_player)의 블럭 오브젝트(obj_block)와의 충돌이벤트로 이동합니다.


일단 중력 설정부터 다시 해봅시다.
MoveJumpMove to Contact 액션을 추가하고 블럭에 direction방향에 붙여줍니다.



     ★ obj_player - obj_block과의 충돌 이벤트

     //Move to Contact 액션

     direction : direction
     maximum : 8
     against : solid objects



다음은 MoveMoveSpeed Vertical 액션을 추가하고, 떨어지는 속도를 정지시킵니다.



     ★ obj_player - obj_block과의 충돌 이벤트

     //Speed Vertical 액션

     vert. speed : 0



이제 점프 설정입니다.
블럭에 닿았을 때 스위치 변수를 0으로 만들도록 해요.

ControlQuestionsCheck Empty 액션을 추가해 Solid오브젝트가 아래에 있을 경우의
조건문을 추가하도록 합니다.



(▲ Solid 조건문 추가)




     ★ obj_player - obj_block과의 충돌 이벤트

     //Check Empty 액션

     x : 0
     y : 1
     objects : Only solid

     [V]Relative         [V]NOT



Start 블럭을 추가하고, ControlVariablesSet Variable 액션을 추가하고, 스위치를 0로 만들어

1차 점프를 할 수 있도록 되돌립니다.



     ★ obj_player - obj_block과의 충돌 이벤트

     //Set Variable 액션

     variable : d_jump
     value : 0



드디어 완성이 되었습니다.
제대로 되는지 테스트 해보도록 해요.



(▲테스트 화면)







---------- 예 제 ----------


platform-5-0액션(더블점프).gmk


platform-5-0액션(더블점프).exe



300x250

댓글