GAME MAKER 강좌
KAYAN
◈ 두더지 공격(obj_attack)
이번에는 두더지를 공격하는 설정을 만들어 봅시다.
(▲ 두더지 공격)
먼저 공격에 대한 충돌을 체크할 마스크 이미지를 스프라이트 이미지로 추가하도록 합니다.
(▲ 충돌 체크 마스크)
그리고 공격용 오브젝트를 하나 만들고, 마스크용 이미지를 오브젝트에 지정합니다.
오브젝트의 이름은 obj_attack 으로 하겠습니다.
(▲ 공격 오브젝트)
이 오브젝트는 화면에 클릭했을 때 생성하고, 아주 잠깐동안만 있다가, 두더지와 충돌하면 타격을
주는 형태입니다.
Create 이벤트를 추가하고 파기이벤트를 구성할 알람 이벤트를 실행합니다.
강좌에서는 알람 0 이벤트를 실행하겠습니다.
(▲ 알람 이벤트 실행)
그리고 알람 0이벤트에서 [Destroy Instance] 액션을 사용하여 현재 오브젝트를 파기하도록 합니다.
(▲ 현재 오브젝트 파기)
이 오브젝트를 이제 게임 제어 오브젝트에서 생성하면 됩니다.
(▲ 이전에 만든 게임 제어 오브젝트)
게임은 두더지를 마우스로 클릭하여 공격합니다.
게임 제어 오브젝트(obj_game)에 Mouse ▶ Global ▶ Global 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 를 선택하면 두더지 오브젝트에 충돌한 공격 오브젝트를 파기할 수 있습니다.
(▲ 충돌 상대 파기)
여기까지 잘 작동하는지 테스트해봅시다.
- 계속 -
'GameMaker강좌[GMS2] > DnD강좌-게임' 카테고리의 다른 글
[게임메이커 강좌-DnD][GMS2]두더지게임 만들기-7 : 게임 오버 점수판 표시(완) (0) | 2021.02.18 |
---|---|
[게임메이커 강좌-DnD][GMS2]두더지게임 만들기-6 : 화면에 점수 표시 (0) | 2021.02.18 |
[게임메이커 강좌-DnD][GMS2]두더지게임 만들기-4 : 타이머 게이지 표시 (2) | 2021.02.18 |
[게임메이커 강좌-DnD][GMS2]두더지게임 만들기-3 : 두더지 땅굴 만들기 (0) | 2021.02.17 |
[게임메이커 강좌-DnD][GMS2]두더지게임 만들기-2 : 두더지 만들기 (0) | 2021.02.17 |
댓글