이번엔 간단한 적을 만들어봅시다.
◈간단한 적만들기
먼저 적들의 parent로 사용할 오브젝트를 한개 만들고, 실질적으로 배치할 몬스터용 오브젝트를
또 한개 만듭니다.
obj_enemy : 모든 적들의 parent
obj_en1 : 실질적으로 배치할 몬스터
(▲슬라임)
일단 이 몬스터는 플레이어와 마찬가지로 중력을 받는 몬스터로 설정합시다.
중력 기본 설정은 이전 강좌에서 설정했던 플레이어와 같게하시면 됩니다.
(▲Create 이벤트-변수)
jump = 점프 변수. 1은 점프 중, 0은 점프 안했을 때
move = 이동 변수. 1은 이동, 0은 이동 안했을 때
xdir = 방향 -1은 왼쪽(180도), 1은 오른쪽(0도)방향
image_speed = 애니메이션 속도
(▲Step 이벤트-중력 설정)
(▲Block과의 충돌 이벤트-중력 설정)
Draw 이벤트 설정
//점프 안했을때 if jump=0{ //이동중일때 //멈췄을때 |
기본적인 중력 설정이 끝났으니, 이제 몬스터가 좌우로 이동하게끔 행동을 설정해봅시다.
Step이벤트는 중력액션이 있으니 End Step이벤트에 작성해보도록 해요.
(▲이동 액션)
End Step이벤트를 추가하고, 조건문으로 이동중인지를 체크합니다.
control -> Variables -> Test Variable 액션을 삽입하고,
variable : move |
다음은 move -> Jump -> Jump to position액션을 삽입해, 몬스터를 이동시킵니다.
x : 1*xdir |
방향이 결정될 때마다 1의 속도로 이동하게 됩니다.
(여기서 속도는 xdir과 같지만 다른속도로 이동하게 하고 싶다면 1의 값을 변경해주면 됩니다.)
이동중일 때 블럭과 맞닿을 시 방향을 변경하는 것이 필요하겠지요.
(▲방향 전환 조건문)
먼저 블럭과의 충돌 이벤트로 이동해서, control -> Questions -> Check Empty액션을 삽입합니다.
x : 1*xdir |
이것은 Solid가 체크된 블럭이 이동방향이 있을 때 작동하게 하는 조건문입니다.
(▲방향 전환)
그리고 이어서 control -> Variables -> Set Variable 액션을 삽입하고 방향을 전환시킵니다.
variable : xdir |
(▲방향 전환)
그러면 이동방향에 블럭이 있을 때 방향을 전환하게 됩니다.
하지만 아래처럼 블럭이 없는 경우 이동을 계속하다 결국 아래로 떨어지겠지요.
(▲블럭이 없는 경우 이동하다 아래로 떨어짐)
이것을 방지하기 위해 아래의 그림처럼 가상 블럭을 배치해놓는 것이 좋습니다.
그러면 몬스터가 이동하다 아래와 같은 가상 블럭에 닿으면 자동으로 방향을 전환하게 되는 것이죠.
(▲가상블럭을 배치해 자동으로 방향을 전환 시킬 수 있음)
또한 이 블럭은 플레이어에 어떠한 방해를 받아서는 안되게 해야겠지요.
일단 이 가상블럭으로 쓸 오브젝트(obj_wall)를 하나 만듭시다.
(▲가상블럭 오브젝트)
보이지 않게 해야하니 Visible을 해제합니다.
다음은 슬라임 오브젝트로 가서 이 가상 블럭과의 충돌 이벤트를 추가합니다.
(▲방향전환)
그리고 이어서 control -> Variables -> Set Variable 액션을 삽입하고 방향을 전환시킵니다.
variable : xdir |
이제 모든 이동이 끝났습니다. 제대로 작동되는지 테스트해봅시다.
obj_enemy : 적들의 parent
obj_en1 : 슬라임
obj_wall : 방향전환용 가상블럭
◈몬스터와 플레이어의 충돌
다음은 몬스터가 플레이어와 만났을 때의 이벤트를 작성해봅시다.
플레이어 오브젝트로 이동해서 몬스터와의 충돌 이벤트를 추가합니다.
(▲몬스터와의 충돌 이벤트)
충돌이벤트는 적들의 parent오브젝트를 지정해줍니다.
이전 강좌에서 작성했던 트랩 이벤트와 같이 룸 재시작 이벤트를 실행하고, 플레이어를 파기하면
되겠지요.
main1 -> Objects ->Create Instance액션을 삽입하고 룸 재시작 오브젝트를 생성합니다.
object : obj_restart |
약간의 이펙트를 생성하면 좋겠지요. 이전에 만든 이펙트르 생성해봅시다.
main1 -> Objects ->Create Instance액션을 삽입하고 룸 재시작 오브젝트를 생성합니다.
object : obj_ef_creator |
그리고 main1 -> Objects ->Destroy Instance액션을 삽입하고, 필요없어진 플레이어를 파기하도록
합니다.
모든 설정이 끝났습니다. 이제 테스트를 해봅시다.
-------응용예제------
'GameMaker강좌[GM8] > 액션게임강좌' 카테고리의 다른 글
[게임메이커강좌-플랫폼]바운스게임(공튀기기게임) 만들기-추가(부서지는 블럭) (12) | 2013.08.16 |
---|---|
[게임메이커강좌-플랫폼]바운스게임(공튀기기게임) 만들기 (34) | 2013.06.17 |
[게임메이커강좌-플랫폼]간단한 플래폼게임 만들기-4-낙하 트랩 (5) | 2013.06.09 |
[게임메이커강좌-플랫폼]간단한 플랫폼게임 만들기-2-게임 구성 (23) | 2013.05.20 |
[게임메이커강좌-플랫폼]간단한 플랫폼게임 만들기-1-중력과 이동 (94) | 2013.04.28 |
댓글