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

[게임메이커강좌-플랫폼]간단한 플래폼게임 만들기-4-낙하 트랩

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





이번엔 낙하하는 트랩과 상승하는 트랩을 만들어 봅시다.



(▲낙하하는 트랩과 상승하는 트랩)






◈상승하는 트랩



먼저 상승하는 트랩을 먼저 만들어 봅시다.
트랩으로 사용할 이미지를 만듭니다.



(▲상승하는 트랩이미지, 중심점을 맞춰야함)


스프라이트로 추가(spr_trap2)하고 x의 중심점을 가운데, y중심점을 이미지의 맨 아래로 설정합니다.

다음은 오브젝트를 만들어야겠지요.



(▲상승하는 트랩오브젝트)


오브젝트를 만들고(obj_trap2), 스프라이트parent를 각각 지정합니다.



(▲중력 설정)


그리고 Create이벤트를 추가하고, move탭 -> Move -> Set Gravity액션을 삽입하여
중력을 설정해줍니다.


     ★obj_trap2 오브젝트

     direction : 90
     gravity : 0.5


90방향은 위쪽, 270방향은 아래쪽, 180방향은 왼쪽, 0방향은 오른쪽입니다.
위로 이동해야하니 방향값은 90도가 되어야 겠지요.


이제 상승하는 트랩의 속도를 너무 빨리 올라가지 않도록 제한해야겠지요.
이미 이전 강좌에서 플레이어의 중력을 설정해봤으니, 후딱 해버립시다.



(▲속도 제한)


Step이벤트를 추가하고, 조건문으로 control탭 -> Variables -> Test Variable액션을 추가합니다.
참고로 vpseed는 음수값이 위쪽을 향해 이동하고, 양수값이 아래쪽을 향하여 이동합니다.


     ★obj_trap2 오브젝트

     variable : vspeed
     value : -8
     operation : smaller than


위쪽으로 향하여 이동하니 속도의 값은 음수가 되고, 조건문은 음수값보다 작을 때로 해야합니다.

다음은 속도를 유지할 값을 설정해야합니다.



(▲속도값 설정)


move탭 -> Move -> Speed Vertical액션을 추가합니다.


     ★obj_trap2 오브젝트

     vert. speed : -8


이제 트랩은 완성되었습니다.
하지만 이대로 배치하면 게임이 시작하자마자 이동해버립니다.
그래서 이 트랩을 생성할 오브젝트가 따로 필요합니다.

트랩 생성기의 마스크에 플레이어가 닿게 되면 이 트랩을 생성하고 생성기는 파기하도록 만들어 봅시다.


먼저 마스크로 사용할 스프라이트를 하나 만들어요.(spr_trap2mask)



(▲트랩 생성기의 마스크)


이미지의 크기는 플레이어와 충돌시킬 범위만큼해서 만들고, 상승하는 트랩이기 때문에
x중심점은 가운데, y중심점을 이미지의 맨 아래로 설정합니다.
이렇게 하는 이유는 트랩이 위쪽으로 이동하기 때문에, 트랩 위쪽에서 플레이어가 충돌 하는지를

체크하기 위함입니다.

이제 트랩 생성기 오브젝트를 만듭니다.(obj_trap_creator90)



(▲트랩 생성기 오브젝트)


그리고 스프라이트를 트랩과 같은 이미지를 지정하고, mask에 이전에 만든 마스크 스프라이트

(spr_trap2mask) 지정합니다.

다음은 플레이어의 충돌 이벤트를 작성해야합니다. 그래야 상승하는 트랩을 생성하겠죠?


(▲상승트랩을 생성함)


플레이어와의 충돌이벤트를 추가하고, main1탭 -> Objects -> Create Instance액션을 추가하고

트랩을 생성합니다.


     ★obj_trap_creator90 오브젝트

     object : obj_trap2
     x : 0
     y : 0
     [V]Relative


이미 트랩을 생성하여 대체했기 때문에 생성기는 필요 없어졌지요.



(▲필요 없어진 생성기는 파기함)


이어서 main1탭 -> Objects -> Destroy Instance 액션을 추가하여 트랩 생성기를 파기하도록 합니다.

드디어 트랩이 완성되었습니다.
룸에 배치할 때는 이 트랩 생성기만 배치하시면 됩니다.








◈낙하하는 트랩



낙하하는 트랩도 상승하는 트랩과 같게 설정하시면 됩니다.
트랩으로 사용할 이미지를 만듭니다.



(▲낙하하는 트랩이미지, 중심점을 맞춰야함)


스프라이트로 추가(spr_trap3)하고 x의 중심점을 가운데, y중심점을 이미지의 맨 아래로 설정합니다.

다음은 오브젝트를 만들어야겠지요.



(▲낙하하는 트랩오브젝트)


오브젝트를 만들고(obj_trap3), 스프라이트와 parent를 각각 지정합니다.



(▲중력 설정)


그리고 Create이벤트를 추가하고, move탭 -> Move -> Set Gravity액션을 삽입하여 중력을

설정해줍니다.


     ★obj_trap3 오브젝트

     direction : 270
     gravity : 0.5


90방향은 위쪽, 270방향은 아래쪽, 180방향은 왼쪽, 0방향은 오른쪽입니다.
아래로 떨어져야하니 방향값은 270도가 되어야 겠지요.


이제 낙하는 트랩의 속도를 너무 빨리 올라가지 않도록 제한해야 합니다.



(▲속도 제한)


Step이벤트를 추가하고, 조건문으로 control탭 -> Variables -> Test Variable액션을 추가합니다.
참고로 vpseed는 음수값이 위쪽을 향해 이동하고, 양수값이 아래쪽을 향하여 이동합니다.


     ★obj_trap3 오브젝트

     variable : vspeed
     value : 8
     operation : larger than


아래쪽으로 향하여 이동하니 속도의 값은 양수가 되고, 조건문은 양수값보다 클 때로 해야겠지요.

다음은 속도를 제한유지할 값을 설정해야합니다.



(▲속도값 설정)


move탭 -> Move -> Speed Vertical액션을 추가합니다.


     ★obj_trap2 오브젝트

     vert. speed : 8


이제 낙하하는 트랩은 완성되었습니다.
이전과 마찬가지로 트랩 생성기를 만들어야 합니다.


먼저 마스크로 사용할 스프라이트를 하나 만듭시다.(spr_trap3mask)



(▲트랩 생성기의 마스크)


이미지의 크기는 충돌할 범위만큼해서 만들고, 낙하하는 트랩이기 때문에
x중심점은 가운데, y중심점을 이미지의 맨 위로 설정합니다.

이제 트랩 생성기 오브젝트를 만듭니다.(obj_trap_creator270)



(▲트랩 생성기 오브젝트)


그리고 스프라이트를 트랩과 같은 이미지를 지정하고, mask에 이전에 만든 마스크 스프라이트(spr_trap3mask)

지정합니다.

다음은 플레이어의 충돌 이벤트를 작성해야합니다. 그래야 낙하하는 트랩을 생성하겠죠?



(▲낙하트랩을 생성함)


플레이어와의 충돌이벤트를 추가하고, main1탭 -> Objects -> Create Instance액션을 추가하고

트랩을 생성합니다.


     ★obj_trap_creator270 오브젝트

     object : obj_trap3
     x : 0
     y : 0
     [V]Relative


이미 트랩을 생성하여 대체했기 때문에 생성기는 필요 없어졌지요.
이어서 main1탭 -> Objects -> Destroy Instance 액션을 추가하여 트랩 생성기를 파기하도록 합니다.

상승하는 트랩과 낙하하는 트랩을 모두 만들었네요. 굳!
이제 룸에 배치할 때는 이 트랩 생성기만 배치하시면 됩니다.



(▲테스트 화면)


제대로 되는지 룸에 배치하여 확인해봅시다.






-------응용예제------


platform-4-액션.gmk


platform-4-액션.exe




300x250

댓글