GAME MAKER 강좌
KAYAN
◈ 상하 이동하는 이동 블록
이번에는 상하 이동하는 블록을 만들어 봅시다.
(▲ 상하 이동하는 이동 블록)
오브젝트를 하나 추가하고, 블록 이미지를 지정합니다.
그리고 solid 를 체크합니다.
이름은... obj_block_solid_move_v 로 하겠습니다.
(▲ 상하 이동하는 이동 블록)
좌우 이동하는 블록과 마찬가지로 부모 오브젝트에 이전에 만든 바닥 오브젝트(obj_block)을
지정합니다.
(▲ 부모 오브젝트 지정)
Create 이벤트를 추가하고 속도를 정의합니다.
(▲ Create 이벤트)
오브젝트에 End Step 이벤트를 추가합니다.
그리고 Common ▶ [Apply To] 액션을 추가합니다.
(▲ End Step 이벤트)
[Apply To] 액션의 [▼]버튼을 클릭하고, 플레이어 오브젝트의 부모 오브젝트(obj_allunit)를 선택합니다.
(▲ [Apply To] 액션에 플레이어 부모 오브젝트를 지정)
이렇게 하면 이 액션에 연결된 이벤트는 현재 이동 블록 오브젝트가 아닌 플레이어 부모 오브젝트에서
실행됩니다.
Collision ▶ [If Object At Place] 조건문 액션을 추가하고 오브젝트에 현재 블록 오브젝트를
지칭하는 other. id 를 지정합니다.
(▲ 충돌 체크)
이것은 플레이어 오브젝트 밑(x, y+abs(other.pspeed))에 상하로 이동중인 이동 블럭이 있을 때
실행되도록 하는 조건문입니다.
다음은 Movement ▶ [Jump To Point] 액션을 사용하여 이 이동 블럭 위에 있는 플레이어 오브젝트를
상하 이동 방향으로 동일하게 이동시킵니다.
(▲ 플레이어가 이동 블록에 착지했을 때)
다음 플레이어가 이동 블록 밑에 닿았을 때 상황을 구성해야 합니다.
먼저 Collision ▶ [If Object At Place] 조건문 액션을 추가하고 속도를 체크합니다.
0보다 크면 아래로 이동하고, 작으면 위로 이동합니다.
우리가 체크하려는 것은 아래로 이동할 때, 그 밑에 플레이어가 있을 때 입니다.
(▲ 이동 블록의 속도 체크)
Collision ▶ [If Object At Place] 조건문 액션을 추가하고, 플레이어 위의 이동 블록
이동방향(x, y-abs(other.pspeed))과 충돌하는 지를 체크합니다.
(▲ 이동 블록 이동 방향에 플레이어가 있을 때)
그리고 [If Expression] 조건문 액션을 추가하고 플레이어 아래 위치에 Solid 오브젝트가 없는지
체크합니다.
(▲ 플레이어 아래 Solid 오브젝트 체크)
다음은 [Function Call] 액션을 추가하고, move_contact_solid 함수를 사용하여 플레이어
아래쪽으로 이동 시킵니다.
(▲ 플레이어 아래쪽으로 이동)
즉, 플레이어가 점프를 하거나 특정 상황에 이동 블록 밑에 닿아 있을 때, 플레이어가 블록에
끼이지 않도록 아래로 이동 블록 속도만큼 이동 시키는 것입니다.
그리고 [If Expression] 조건문 액션을 추가하고 플레이어 밑에 Solid 오브젝트가 있는지 체크합니다.
이동 블럭이 플레이어를 더이상 밀어낼 수 없는 위치에 있다면, 다시 반대 방향으로 이동 시킵니다.
(▲ 이동 블록을 반대 방향으로 이동)
(▲ 이동 블록을 반대 방향으로 이동)
여기까지는 이동 블록에 착지한 플레이어 오브젝트를 제어하는 이벤트였습니다.
마지막으로 [Jump To Point] 액션을 사용하여 속도 변수에 따라 현재 이동 블록을 이동 시키면 됩니다.
(▲ 현재 이동 블록 이동)
다음은 현재 이동 블록 오브젝트의 부모 오브젝트인 solid 오브젝트와 충돌 이벤트를 추가합니다.
(▲ solid 오브젝트와의 충돌 이벤트)
그리고 [Assign Variable] 액션을 추가하고, 속도를 반대로 설정합니다.
(▲ 속도를 반대로 설정)
이전에 만든 좌우 이동 블록과 마찬가지로 일부 이동 구간을 지정해봅시다.
(▲ 좌우 이동 블록과 마찬가지로 이동 구간을 지정)
이동 블록에 유턴 오브젝트(obj_reverse)와의 충돌 이벤트를 추가합니다.
(▲ 유턴 오브젝트와의 충돌 이벤트 추가)
그리고 [Assign Variable] 액션을 추가하고, 속도를 반대로 설정합니다.
(▲ 속도를 반대로 설정)
이동 블록이 완성되었습니다.
룸의 인스턴스 레이어에 이동 블록을 배치합니다.
(▲ 이동 블록 배치)
잘 작동하는지 테스트해봅시다.
(▲ 테스트 화면)
휴~ 여기까지 잘 따라와 주셔서 감사합니다.
긴 강좌에 별 내용도 없었는데, 유익하셨는지 모르겠군요.
강좌는 플랫포머 게임에 필요한 단순 기능만 담았습니다.
응용하기에 따라서 여러분들은 더 멋진 게임을 만드실 수 있을 거라 생각됩니다.
- 끝 -
'GameMaker강좌[GMS2] > DnD강좌-게임' 카테고리의 다른 글
[게임메이커 강좌-DnD][GMS2]플랫포머 게임 만들기-10 : 좌우 이동하는 이동 블록 (0) | 2021.03.03 |
---|---|
[게임메이커 강좌-DnD][GMS2]플랫포머 게임 만들기-9 : 다음 룸으로 이동 (0) | 2021.03.02 |
[게임메이커 강좌-DnD][GMS2]플랫포머 게임 만들기-8 : 트랩 만들기 (0) | 2021.03.02 |
[게임메이커 강좌-DnD][GMS2]플랫포머 게임 만들기-7 : 플레이어 데드라인 (0) | 2021.03.01 |
[게임메이커 강좌-DnD][GMS2]플랫포머 게임 만들기-6 : 플레이어의 점프공격 (0) | 2021.03.01 |
댓글