GAME MAKER 강좌
KAYAN
이번 강좌에선 강좌4(http://kayanworld.tistory.com/55)에서 만들었던 게임을 토대로 점프시 벽에
닿았을 때 하강속도를 감소시키는 방법에 대해 알아보도록 합시다.
(▲벽에 닿으면 하강 속도가 감소)
◈하강속도 감소시키기
점프를 뛰었다가 벽에 닿았을 때 속도를 어떻게 감소시킬 수 있을까요?
(▲벽에 닿았을때)
점프중일 때 이동 키를 눌러 벽에 닿았을때, 속도는 줄어 들게 해야합니다.
상승중일때는 점점 속도를 줄이고, 아래로 하강 중일 때는 일정한 저속으로 하강합니다.
만약 키를 누르지 않는다면, 줄어든 속도가 아니라 중력 설정대로 하강하게 되지요.
이 설정은 플레이어의 키 이벤트에서 설정하면 됩니다.
일단 이동 키에 대해 다시 한번 점검해보도록 합시다.
(▲왼쪽 이동 설정)
Control ▶ Questions ▶ Check Empty 액션으로 먼저 왼쪽 이동 방향에 솔리드 오브젝트가 있는지
체크합니다.
★ obj_player - Left 키를 누르고 있을때 |
이것은 솔리드 오브젝트가 없을때, 이벤트가 실행되게 하는 것입니다.
그리고 플레이어를 이동 시켜야겠지요.
Move ▶ Jump ▶ Jump to position 액션으로 이동시킵니다.
★ obj_player - Left 키를 누르고 있을때 |
그리고 이동 애니메이션 설정을 위해 이동 중인지 변수로 체크하게 합니다.
Control ▶ Variable ▶ Set Variable 액션으로 이동 변수를 1로 만듭니다(멈추었을때는 0).
★ obj_player - Left 키를 누르고 있을때 |
다음은 방향에 대한 설정이 필요하겠죠.
이 방향은 플레이어의 스프라이트 이미지를 반대쪽으로 변형시키는 기능을 했었지요.
Control ▶ Variable ▶ Set Variable 액션으로 방향 변수를 -1로 만듭니다(오른쪽은 1).
★ obj_player - Left 키를 누르고 있을때 |
이제 하강 속도를 줄이는 이벤트입니다.
이동은 솔리드 오브젝트가 없을때만 이동 시켰지만, 이번에는 솔리드 오브젝트가 있을때 이벤트를 발생시켜야
합니다. 그래야 계획대로 벽에 닿았을 때 속도를 줄일 수 있겠지요.
Control ▶ Questions ▶ Check Empty 액션으로 왼쪽 이동 방향에 솔리드 오브젝트가 있는지 체크합니다.
(▲솔리드 오브젝트가 있는지 체크)
★ obj_player - Left 키를 누르고 있을때 |
이것은 이동방향에 솔리드 오브젝트가 있을때, 이벤트를 실행시키는 것입니다.
다음은 정프 중인지 알 필요가 있습니다.
강좌에선 점프 중일 때 변수로 설정하게 했었지요(강좌에선 jump 변수, 1이면 점프 0이면 점프 안함).
Control ▶ Other ▶ Start block 을 추가하고, Control ▶ Variable ▶ Test Variable 액션으로
점프중인지 체크합니다.
(▲점프 중인지 체크)
★ obj_player - Left 키를 누르고 있을때 |
이제 vspeed를 통해 속도를 줄여야 합니다.
먼저 상승 중일때 속도를 줄여야 겠지요.
Control ▶ Other ▶ Start block 을 추가하고, Control ▶ Variable ▶ Test Variable 액션으로
상승중인지 체크합니다.
(▲상승 중인지 체크)
★ obj_player - Left 키를 누르고 있을때 |
vspeed는 음수(-)가 위쪽, 양수(+)가 아래쪽이지요.
즉, vspeed가 음수일떄, 속도를 점점 줄이게(아래로 향하게 해야하기 때문에 속도를 양수로 만듦) 하는 것입니다.
Move ▶ Move ▶ Speed Vertical 액션을 추가하고, 속도를 점점 줄이게 합니다.
(▲속도를 점점 줄임)
★ obj_player - Left 키를 누르고 있을때 |
하강중 일때는 속도를 일정하게 할 필요가 있겠지요.
Control ▶ Other ▶ Else 을 추가하고, Move ▶ Move ▶ Speed Vertical 액션을 추가해 일정한
저속으로 하강하게 합니다.
(▲일정한 속도로 하강하게 함)
★ obj_player - Left 키를 누르고 있을때 |
왼쪽 키에 대한 설정이 끝났습니다.
(▲왼쪽 키 이벤트)
다음은 왼쪽 키 이벤트를 응용해서 오른쪽 키 이벤트도 설정해 봅시다.
일단 오른쪽 이동 이벤트 먼저 점검해봅시다.
(▲오른쪽 이동 설정)
Control ▶ Questions ▶ Check Empty 액션으로 오른쪽 이동 방향에 솔리드 오브젝트가 있는지 체크합니다.
★ obj_player - Right 키를 누르고 있을때 |
이것은 솔리드 오브젝트가 없을때, 이벤트가 실행되게 하는 것입니다.
그리고 플레이어를 이동 시켜야겠지요.
Move ▶ Jump ▶ Jump to position 액션으로 이동시킵니다.
★ obj_player - Right 키를 누르고 있을때 |
그리고 이동 애니메이션 설정을 위해 이동 중인지 변수로 체크하게 합니다.
Control ▶ Variable ▶ Set Variable 액션으로 이동 변수를 1로 만듭니다(멈추었을때는 0).
★ obj_player - Right 키를 누르고 있을때 |
다음은 방향에 대한 설정이 필요하겠죠.
이 방향은 플레이어의 스프라이트 이미지를 반대쪽으로 변형시키는 기능을 했었지요.
Control ▶ Variable ▶ Set Variable 액션으로 방향 변수를 1로 만듭니다(왼쪽은 -1).
★ obj_player - Right 키를 누르고 있을때 |
이제 하강 속도를 줄이는 이벤트입니다.
왼쪽 키에서 설정한 것과 같이 솔리드 오브젝트가 있을때 이벤트를 발생시켜야 합니다.
그래야 계획대로 벽에 닿았을 때 속도를 줄일 수 있겠지요.
Control ▶ Questions ▶ Check Empty 액션으로 오른쪽 방향에 솔리드 오브젝트가 있는지 체크합니다.
★ obj_player - Right 키를 누르고 있을때 |
이것은 이동방향에 솔리드 오브젝트가 있을때, 이벤트를 실행시키는 것입니다.
다음은 정프 중인지 알 필요가 있습니다.
강좌에선 점프 중일 때 변수로 설정하게 했었지요(강좌에선 jump 변수, 1이면 점프 0이면 점프 안함).
Control ▶ Other ▶ Start block 을 추가하고, Control ▶ Variable ▶ Test Variable 액션으로 점프중인지
체크합니다.
★ obj_player - Right 키를 누르고 있을때 |
이제 vspeed를 이용해 상승 중일때 속도를 줄여야 겠지요.
먼저 Control ▶ Other ▶ Start block 을 추가하고, Control ▶ Variable ▶ Test Variable 액션으로
상승중인지 체크합니다.
★ obj_player - Right 키를 누르고 있을때 |
vspeed는 음수(-)가 위쪽, 양수(+)가 아래쪽이지요.
Move ▶ Move ▶ Speed Vertical 액션을 추가하고, 속도를 점점 줄이게 합니다.
★ obj_player - Right 키를 누르고 있을때 |
하강중 일때는 속도를 일정하게 할 필요가 있겠지요.
Control ▶ Other ▶ Else 을 추가하고, Move ▶ Move ▶ Speed Vertical 액션을 추가해 일정한 저속으로
하강하게 합니다.
★ obj_player - Right 키를 누르고 있을때 |
(▲오른쪽 키 이벤트)
모든 설정이 끝났네요.
제대로 되는지 테스트 해보도록 해요.
(▲테스트 화면)
이번 강좌는 간단했죠?
응용하는 것을 복잡하게 생각하기 보단, 어떻게 작동하게 할지, 단계별로 원리를 생각하다보면,
구현하기가 좀 더 수월하답니다.
----------- 예 제 -----------
'GameMaker강좌[GM8] > 액션게임강좌' 카테고리의 다른 글
[게임메이커강좌-플랫폼]간단한 플래폼게임 만들기-5-파트4-벽타기 (14) | 2013.10.29 |
---|---|
[게임메이커강좌-플랫폼]간단한 플래폼게임 만들기-5-파트2-점프 높이 조절 (6) | 2013.09.29 |
[게임메이커강좌-플랫폼]간단한 플래폼게임 만들기-5-파트1-더블 점프 (15) | 2013.09.26 |
[게임메이커강좌-플랫폼]바운스게임(공튀기기게임) 만들기-추가(부서지는 블럭) (12) | 2013.08.16 |
[게임메이커강좌-플랫폼]바운스게임(공튀기기게임) 만들기 (34) | 2013.06.17 |
댓글