이동 및 위치
게임에서 이동과 위치는 매우 중요합니다. GameMaker는 모든 상황에 대처할 수 있는 다양한 기능을 제공합니다. 인스턴스를 이동시키는 두 가지 주요 방법은 실제 위치를 설정하거나 속도/방향 벡터를 설정하는 것입니다. 이는 내장 인스턴스 변수를 사용하거나 특정 이동 함수를 사용할 수 있습니다. 아래 섹션에서 이 두 가지 옵션에 대해 설명합니다.
인스턴스 변수
모든 인스턴스에 내장된 다음 변수들은 인스턴스가 이동할 때 다양한 동작을 변경하기 위해 읽고 수정할 수 있습니다. 이 변수들은 속도와 방향 벡터에 영향을 미칩니다:
변수 이름 | 설명 |
---|---|
direction | 이동 방향 |
friction | 마찰 계수 |
gravity | 중력 |
gravity_direction | 중력 방향 |
hspeed | 수평 속도 |
vspeed | 수직 속도 |
speed | 전체 속도 |
이 외에도 인스턴스의 위치를 직접 설정할 수 있는 변수는 다음과 같습니다:
변수 이름 | 설명 |
---|---|
xy | 현재 위치 (x, y) |
xprevious | 이전 x 위치 |
yprevious | 이전 y 위치 |
xstart | 시작 x 위치 |
ystart | 시작 y 위치 |
함수
다음 함수들은 인스턴스를 다양한 방식으로 이동시키는 데 사용될 수 있으며, 일부는 속도/방향 벡터에 영향을 미치고 다른 일부는 방 안의 실제 x/y 위치에 직접 영향을 미칩니다:
함수 이름 | 설명 |
---|---|
motion_add | 속도 벡터에 값을 추가 |
motion_set | 속도 벡터를 설정 |
move_towards_point | 특정 지점으로 이동 |
move_bounce_all | 모든 객체와 충돌 시 튕김 |
move_bounce_solid | 고체 객체와 충돌 시 튕김 |
move_contact_all | 모든 객체와 접촉 시 이동 |
move_contact_solid | 고체 객체와 접촉 시 이동 |
move_outside_all | 모든 객체 밖으로 이동 |
move_outside_solid | 고체 객체 밖으로 이동 |
move_random | 무작위로 이동 |
move_snap | 그리드에 맞춰 이동 |
move_wrap | 방의 경계를 넘어 이동 |
place_snapped | 그리드에 맞춰 위치 설정 |
move_and_collide | 이동하면서 충돌 감지 |
활용 예제
다음은 인스턴스를 이동시키는 다양한 활용 예제입니다:
// 인스턴스를 오른쪽으로 이동
x += 5;
// 중력 적용
vspeed += gravity;
// 특정 지점으로 이동
move_towards_point(100, 100, 5);
// 충돌 시 튕기기
move_bounce_all();
// 무작위 방향으로 이동
move_random();
// 마찰을 적용하여 속도 감소
hspeed *= friction;
// 인스턴스의 위치를 그리드에 맞춰 조정
move_snap(32, 32);
// 인스턴스가 방의 경계를 넘어가면 반대편으로 이동
move_wrap();
// 인스턴스의 속도를 설정
motion_set(10, 45);
// 고체 객체와 충돌 시 이동
move_contact_solid(0);
이러한 함수와 변수를 활용하여 게임 내에서 인스턴스의 이동을 효과적으로 제어할 수 있습니다.