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

[게임메이커 강좌-DnD][GMS2]두더지게임 만들기-5 : 두더지 공격 시스템

by 타락카얀 2021. 2. 18.
728x90

 

 

GAME MAKER 강좌

 

 

KAYAN


 

 

 

 

 

◈ 두더지 공격(obj_attack)

 

 

이번에는 두더지를 공격하는 설정을 만들어 봅시다.

 

(▲ 두더지 공격)

 

먼저 공격에 대한 충돌을 체크할 마스크 이미지를 스프라이트 이미지로 추가하도록 합니다.

 

(▲ 충돌 체크 마스크)

 

그리고 공격용 오브젝트를 하나 만들고, 마스크용 이미지를 오브젝트에 지정합니다.

오브젝트의 이름은 obj_attack 으로 하겠습니다.

 

(▲ 공격 오브젝트)

 

이 오브젝트는 화면에 클릭했을 때 생성하고, 아주 잠깐동안만 있다가, 두더지와 충돌하면 타격을

주는 형태입니다.

Create 이벤트를 추가하고 파기이벤트를 구성할 알람 이벤트를 실행합니다.

강좌에서는 알람 0 이벤트를 실행하겠습니다.

 

(▲ 알람 이벤트 실행)

 

그리고 알람 0이벤트에서 [Destroy Instance] 액션을 사용하여 현재 오브젝트를 파기하도록 합니다.

 

(▲ 현재 오브젝트 파기)

 

이 오브젝트를 이제 게임 제어 오브젝트에서 생성하면 됩니다.

 

(▲ 이전에 만든 게임 제어 오브젝트)

 

게임은 두더지를 마우스로 클릭하여 공격합니다.

게임 제어 오브젝트(obj_game)MouseGlobalGlobal Left Pressed 이벤트를 추가합니다.

 

(▲ 마우스 클릭 이벤트)

 

마우스 클릭은 2가지 방식이 있습니다.

현재 오브젝트를 클릭하는 방식, 그리고 룸 전체를 클릭하는 방식이 있습니다.

강좌에서는 룸 전제를 클릭하는 방식을 사용하겠습니다.

 

클릭 이벤트에서 [If Variable] 조건문 액션을 추가하고, 남은 시간을 체크합니다.

그리고 남은 시간이 0보다 클 때(Greater), [Create Instance]액션을 사용하여 공격 오브젝트를

마우스 좌표에 생성합니다.

 

(▲ 공격 오브젝트 생성)

 

생각보다 간단하죠.

 

두더지가 공격 당했을 때, 상황을 만들어봅시다.

오브젝트를 하나 만들고, 공격 당했을 때의 이미지를 지정합니다.

오브젝트의 이름은 간단하게 obj_enemy_dead 로 합시다.

 

(▲ 공격 당했을 때)

 

이 오브젝트는 평상시의 두더지 오브젝트(obj_enemy_01)가 공격 오브젝트(obj_attack)와 충돌 했을 때,

기존의 오브젝트는 파기한 다음, 이 오브젝트를 생성할 것입니다.

애니메이션이 있으면 Animation End 이벤트를 추가합니다. 애니메이션이 없는 경우는 알람 이벤트를

사용해도 됩니다.

그리고 이벤트에 [Destroy Instance] 액션을 사용하여 애니메이션이 끝난 현재 오브젝트를 파기합니다.

 

다음은 공격 당했을 때의 이펙트를 추가해봅시다.

 

(▲ 공격 당했을 때의 이펙트)

 

이펙트 애니메이션을 스프라이트 이미지로 추가합니다. 그리고 중심점을 가운데로 설정하세요.

그래야 좀 더 정확한 위치에 표시할 수 있습니다.

 

(▲ 이펙트 이미지)

 

그리고 오브젝트를 하나 만들고, 이펙트 이미지를 지정해줍니다.

오브젝트의 이름은 obj_effect 로 합시다.

 

 

(▲ 이펙트 오브젝트)

 

Animation End 이벤트를 추가하고, [Destroy Instance] 액션을 사용하여 현재 오브젝트를 파기합니다.

 

(▲ 이펙트 오브젝트 파기)

 

이제 공격 당했을 때의 오브젝트(obj_enemy_dead)와 이펙트 오브젝트(obj_effect)를 두더지 오브젝트에서 생성하면 됩니다.

두더지 오브젝트(obj_enemy_01)를 열고, 이전에 만든 공격 오브젝트(obj_attack)과의 충돌 이벤트를 추가합니다.

 

(▲ 공격 오브젝트와의 충돌 이벤트 추가)

 

먼저 두더지에 유효타를 날렸다면 점수를 획득해야 겠지요.

[Assign Variable] 액션을 사용하여 Relative를 체크하고 점수를 올려줍니다.

 

(▲ 점수 득점)

 

다음은 현재 두더지 오브젝트를 파기하는 것입니다.

[Destroy Instance] 액션을 추가하고 현재 오브젝트를 파기합니다.

 

(▲ 현재 오브젝트를 파기하고, 부가효과 추가)

 

그리고 [Create Instance] 액션을 사용하여 공격 당했을 때의 오브젝트(obj_enemy_dead)를 현재 위치에 생성하고,

깊이(depth)를 현재 오브젝트의 깊이와 동일하게 설정합니다.

 

[Create Instance] 액션을 사용하여 이펙트를 공격 오브젝트의 위치에 생성하도록 합시다.

other는 충돌 상대를 참조합니다. 그래서 충돌 상대의 위치를 참조할 때는 (other.x, other.y) 로 할 수

있습니다.

생성된 이펙트의 깊이(depth)를 현재 오브젝트의 깊이보다 앞에 위치하도록 설정(depth는 작을 수록

화면 앞에 위치)합니다.

 

(▲ 이펙트 생성)

 

마지막으로 공격 오브젝트를 파기해야 합니다.

[Destroy Instance] 액션을 추가합니다. 그리고 [▼] 버튼을 클릭합니다.

 

(▲ 공격 오브젝트 파기)

 

그러면 적용 오브젝트를 선택할 수 있는데, 여기서 충돌 상대를 지칭하는 other 를 선택하면 됩니다.

 

(▲ 충돌 상대 적용)

 

이와 같이 other 를 선택하면 두더지 오브젝트에 충돌한 공격 오브젝트를 파기할 수 있습니다.

 

(▲ 충돌 상대 파기)

 

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

 

 

 

 

- 계속 -

 

 

 

 

 

 

300x250

댓글