게임메이커 스튜디오 2 처음 시작하기 02

오브젝트를 생성해 룸에 추가한 후, 키보드를 이용해 움직입니다.

2022-06-11

gamedevgamemakerstudio2gms

참고 문헌: 게임메이커 스튜디오 공식 동영상 My First Game - Intro to GameMaker - Space Rocks (Part 2) 바로가기

오브젝트 생성

오른쪽 '에셋' 패널의 '오브젝트'에서 마우스 오른쪽 버튼을 눌러 '오브젝트 > 생성 > 오브젝트'를 클릭합니다.

파일 이름은 'obj_spaceship'처럼 'obj_'를 접두사로 쓰는 것을 권장합니다.

'스프라이트 없음'을 눌러 스프라이트를 선택합니다.

룸 생성

마찬가지로 오른쪽 '에셋' 패널의 '룸'에서 룸을 생성합니다. (아마 '룸1'이 자동 생성되어 있을 것입니다.)

룸에 오브젝트 추가하기

룸 화면에서 오른쪽 '에셋' 패널의 '오브젝트'에 속해 있는 각 오브젝트를 드래그해 룸 화면 안에 넣습니다. 그러면 오브젝트가 룸에 추가됩니다.

게임 실행하기

F5를 누르거나 화면 상단 메뉴 아이콘 중에서 오른쪽으로 뾰족한 삼각형 아이콘을 클릭하세요. 그러면 현재 상태의 게임이 실행됩니다. (아직 움직임은 없습니다.)

룸 주의사항

  • 룸에 오브젝트를 추가할 때는 왼쪽 '레이어 - 룸1' 창에서 'Instances'가 선택되어 있어야 합니다. 'Background'가 선택되어 있으면 안 됩니다.

  • 게임 실행 화면 창 크기를 바꾸려면 왼쪽 아래 '등록정보 - 룸1'에서 '너비'와 '높이'를 바꿔 주세요.

오브젝트 이벤트 추가

원하는 오브젝트를 2번 클릭한 후, '이벤트 > 이벤트 추가 > 스텝 > 스텝'을 선택하세요. 여기서 '스텝'이란 게임 루프를 의미합니다. '스텝 > 스텝' 이벤트에 코드를 작성하면, 해당 코드는 게임 루프가 실행되는 동안 각 프레임마다 실행됩니다.

'게임 옵션 > 기본'에서 '초당 게임 프레임 수'를 60회(프로덕션 게임의 일반적인 기준)로 설정했다면, '스텝 > 스텝'에 추가한 코드는 1초에 60번 실행됩니다.

우주선 코드 작성

플레이어가 컨트롤하는 우주선의 코드입니다.

우주선 이벤트 '스텝'

/// @description Insert description here
// You can write your code in this editor

if (keyboard_check(vk_right)) {
    image_angle -= 5
}

if (keyboard_check(vk_left)) {
    image_angle += 5
}

if (keyboard_check(vk_up)) {
    motion_add(image_angle, 0.05)
}

move_wrap(true, true, sprite_width/2)
    

keyboard_check() 함수는 키보드 클릭을 체크합니다.

vk_right, vk_left, vk_up은 게임엔진이 제공하는 키보드 상수입니다. keyboard_input을 참조하세요.

image_angle은 우주선 오브젝트의 속성(property)입니다. 스프라이트 이미지의 각도를 나타냅니다. 오른쪽이 0도, 위가 90도, 왼쪽이 180도, 아래가 270도입니다.

motion_add()는 우주선 오브젝트의 메소드입니다. 방향과 속도를 인자로 받습니다. 따라서 오브젝트는 해당 방향과 속도로 움직이게 됩니다.

move_wrap() 메소드는 오브젝트가 화면 밖으로 나갔을 때 화면 반대편으로 들어오게 하는 메소드입니다. 첫 번째 인자는 위아래 래핑, 두 번째 인자는 좌우 래핑입니다. 세 번째 인자는 래핑이 시작되는 마진을 나타냅니다. 0으로 하면 조금 어색합니다. 한쪽에서 몸체가 다 나가지도 않았는데 반대편에 나타나기 때문입니다. 그래서 스프라이트 너비의 절반 정도(sprite_width / 2)를 주는 것이 좋습니다.

소행성 코드 작성

소행성 이벤트 '생성'

sprite_index = choose(spr_asteroid_64, spr_asteroid_128, spr_asteroid_256)
direction = irandom_range(0, 359)
image_angle = irandom_range(0, 359)
speed = 1

sprite_index에 스프라이트 3가지 중 하나를 무작위로 선택해 집어넣습니다. sprite_index는 해당 오브젝트의 현재 스프라이트를 반환합니다.

choose()는 여러 아이템 인자 중 하나를 무작위로 선택합니다.

direction은 오브젝트의 진행 방향입니다. 역시 오른쪽이 0도, 위 90도, 왼쪽 180도, 아래 270도입니다. image_angle은 스프라이트의 형태에 관련된 속성이며, direction은 오브젝트의 운동에 관련된 속성입니다.

speed는 오브젝트의 운동 속도입니다.

irandom_range()는 정수 범위 중에서 무작위 정수 1개를 반환합니다. irandom_range(0, 359)는 0부터 359까지의 정수 중 하나를 무작위로 반환합니다. 0과 359 모두 포함됩니다.

소행성 이벤트 '스텝'

move_wrap(true, true, sprite_width / 2)
image_angle += 1

우주선과 마찬가지로 move_wrap() 메소드로 화면에서 벗어나지 않도록 해 주고, image_angle에 변화를 주어 스프라이트를 빙글빙글 회전시켜 줍니다.