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

[게임메이커 강좌-DnD][GMS2]플랫포머 게임 만들기-6 : 플레이어의 점프공격

by 타락카얀 2021. 3. 1.
728x90

 

 

GAME MAKER 강좌

 

 

KAYAN


 

 

 

 

 

◈ 플레이어의 점프공격

 

아래와 같이 마리오 게임처럼 플레이어가 점프를 해서 슬라임을 공격하는 기능을 만들어 봅시다.

 

(▲ 플레이어의 점프 공격)

 

플레이어 오브젝트로 이동해서 슬라임의 부모 오브젝트(obj_enemy)와의 충돌 이벤트를 추가합니다.

그리고 [If Expression] 조건문 액션을 추가합니다.

[If Expression] 조건문 액션은 여러개의 조건문을 구성할 때 사용합니다.

첫번째 조건문은 vspeed(수직속도)가 0보다 클 때로 합니다.

이것은 점프를 하다 아래로 내려올 때를 말합니다(반대로 위로 올라간다면 vspeed 값은 0보다 작습니다).

 

(▲ 점프공격 조건 구성)

 

두번째 조건문은 점프변수가 점프중일 떄로 합니다. 또는 place_free(x,y+1) 로 설정해도 같습니다.

 

그리고 충돌 상대의 슬라임의 체력변수를 감소시키도록 합니다.

[Assign Variable] 액션을 추가하고 [▼] 버튼을 클릭합니다.

 

(▲ 슬라임 체력 감소)

 

플레이어와의 충돌 상대인 Other 를 선택합니다.

 

(▲ Other 선택)

 

공격이 성공하면 플레이어를 약간 띄워봅시다.

[Assign Variable]액션을 추가하고, vspeed 를 음수값을 지정합니다.

 

(▲ 공격 성공 후 점프)

 

다음은 슬라임이 공격받고 파기 될 때 생성되는 이펙트을 만들어 봅시다.

 

이펙트 이미지를 스프라이트로 추가하고, 중심점을 맞춥니다.

 

(▲ 이펙트 이미지)

 

오브젝트를 하나 만들고 이미지를 지정합니다.

이름은... obj_effect_01 로 하겠습니다.

 

(▲ 이펙트 오브젝트)

 

Animation End 이벤트를 추가합니다.

Instances[Destroy Instance] 액션을 추가하고 애니메이션이 끝났을 때 파기하도록 합니다.

 

(▲ 애니메이션이 끝나면 파기)

 

슬라임 오브젝트(obj_en_01)로 이동해서 Destroy 이벤트를 추가하도록 합니다.

 

※Destroy 이벤트는 오브젝트가 파기 될 때 발생하는 이벤트입니다.

 

(▲ Destroy 이벤트 추가)

 

Destroy 이벤트Instances[Create Instance] 액션을 추가하고 슬라임의 현재 (x,y) 위치에

이펙트를 생성하도록 합니다.

Layer 는 이펙트를 생성할 룸의 인스턴스 레이어 이름을 지정하면 됩니다.

 

(▲ Destroy 이벤트에서 이펙트 생성)

 

다음은 플레이어가 공격상태가 아닌 상황에 슬라임과 충돌 했을 때, 반대로 플레이어가 파기되고,

게임을 재시작하도록 설정해봅시다.

 

먼저 게임 재시작 이벤트를 구성할 오브젝트를 하나 추가합니다.

이름은 간단하게 obj_restart 로 합시다.

 

(▲ 게임 재시작 오브젝트)

 

Create 이벤트를 추가하고, Instances[Set Alarm Countdown] 액션을 추가하고

알람 이벤트를 실행하도록 합니다.

게임을 재시작할 시간을 구성합니다. 강좌에서는 90으로 설정하겠습니다.

 

(▲ 알람 이벤트 설정)

 

알람 이벤트를 추가하고, Rooms[Restart Room]액션을 추가하고 룸을 재시작하도록 합니다.

 

(▲ 룸 재시작)

 

이제 이 오브젝트를 플레이어가 파기되면, 룸 재시작 오브젝트를 생성하고 현재 룸을 다시

플레이 할 수 있도록 구성할 것입니다.

 

플레이어 오브젝트로 이동해서 User 이벤트(사용자 이벤트)를 추가하도록 합니다.

 

(▲ User 이벤트)

 

※ User 이벤트는 자동으로 실행되지 않고, 스크립트와 마찬가지로 호출해야 실행되는 이벤트입니다.

 

(▲ User 이벤트)

 

강좌에서는 User Event 0번을 선택하겠습니다.

슬라임과 마찬가지로 Instances[Create Instance] 액션을 추가하고 이펙트(obj_effect_01)

생성하도록 합니다.

다음 Instances[Create Instance] 액션을 추가하고 게임 재시작 오브젝트(obj_restart)

생성합니다.

마지막으로 Instances[Destroy Instance] 액션을 추가하고 현재 플레이어를 파기하도록 합니다.

 

(▲ User 이벤트)

 

이 이벤트를 플레이어의 슬라임 부모 오브젝트(obj_enemy)와의 충돌이벤트에서 점프공격 조건이

안 되는 상태에서 호출하면 됩니다.

[Else] 조건문을 추가하고, Instances[Call User Event] 액션을 사용하여 이제까지 만든

User 이벤트를 호출합니다.

 

(▲ User 이벤트 호출)

 

잘 작동하는지 테스트 해봅시다.

 

 

 

 

- 계속 -

 

 

 

 

 

300x250

댓글