move_random 함수 설명
move_random
함수는 인스턴스를 방 안의 임의의 위치로 이동시키는 기능을 제공합니다. 이때 "보이지 않는" 그리드에 맞춰 정렬됩니다. 예를 들어, hsnap
과 vsnap
값이 각각 32로 설정되면, 인스턴스는 32x32 정사각형 그리드에 맞춰 임의의 위치로 이동합니다. 이 값을 1로 설정하면 방 안의 어느 위치로든 이동할 수 있습니다.
이 함수는 게임이 새로 실행될 때마다 동일한 위치로 스냅되는데, 이는 GameMaker가 매번 동일한 초기 랜덤 시드를 생성하기 때문입니다. 이로 인해 디버깅이 용이해집니다. 이 동작을 피하려면 게임 시작 시 randomise
함수를 사용해야 합니다. 하지만 이는 테스트 및 디버깅 중에만 해당되며, 최종 실행 파일에서는 매번 랜덤한 위치로 이동하게 됩니다.
문법
move_random(hsnap, vsnap);
인수 설명
인수 | 타입 | 설명 |
---|---|---|
hsnap | Real | 수평 스냅 (셀 간의 픽셀 크기) |
vsnap | Real | 수직 스냅 (셀 간의 픽셀 크기) |
반환값
- N/A
예제
if (keyboard_check(vk_space)) {
move_random(1, 1);
}
위 코드는 스페이스 키가 눌릴 때 인스턴스를 방 안의 임의의 위치로 이동시킵니다.
활용 예제
- 랜덤 적 생성
gml if (instance_number(enemy) < 5) { var new_enemy = instance_create_layer(move_random(32, 32), move_random(32, 32), "Enemies", enemy); }
- 아이템 위치 변경
gml if (keyboard_check(vk_i)) { move_random(32, 32); }
- 게임 시작 시 랜덤 위치로 이동
gml randomise(); move_random(32, 32);
- 특정 조건에서 랜덤 이동
gml if (health < 20) { move_random(32, 32); }
- 타이머에 따라 랜덤 이동
gml if (alarm[0] == 0) { move_random(32, 32); alarm[0] = room_speed; // 1초 후 다시 이동 }
이와 같은 다양한 활용 예제를 통해 move_random
함수를 효과적으로 사용할 수 있습니다.