Snap Position
이 섹션에서는 인스턴스를 특정 그리드 좌표에 "스냅"하는 방법을 설명합니다. 그리드 "셀"의 크기를 제공하면 인스턴스가 그리드에 맞춰 스냅됩니다. 예를 들어, 수평 및 수직 그리드 스냅 값을 8로 설정하고 인스턴스의 위치가 (4, 6)일 경우, 인스턴스는 (0, 8) 위치로 스냅됩니다. 이는 현재 위치를 수평 및 수직 스냅 설정으로 나누어 떨어지는 가장 가까운 값으로 반올림한다는 의미입니다. 그리드 셀은 방의 왼쪽 상단 모서리 (0, 0)에서 시작합니다.
기본 스냅 값은 (32, 32)로 설정되어 있지만, 필요에 따라 양의 정수 값으로 변경할 수 있습니다.
## 동작 구문
```gml
// 예제 GML 코드
if (mouse_check_button(mb_left)) {
// 마우스 버튼이 눌려 있을 때 인스턴스 이동
position_x = mouse_x;
position_y = mouse_y;
} else {
// 마우스 버튼이 풀리면 스냅
position_x = round(position_x / 32) * 32;
position_y = round(position_y / 32) * 32;
}
인수 설명
| 인수 | 설명 |
|---|---|
| horizontal | 스냅할 수평 셀 값 |
| vertical | 스냅할 수직 셀 값 |
활용 및 응용 예제
- 격자 기반 게임 만들기
이 기능을 사용하여 타일 기반 전략 게임에서 유닛이 격자 이동하도록 만들 수 있습니다.
gml // 유닛의 스냅 이동 if (mouse_check_button(mb_left)) { position_x = mouse_x; position_y = mouse_y; } else { position_x = round(position_x / 64) * 64; // 64x64 셀로 스냅 position_y = round(position_y / 64) * 64; }
- 레벨 디자인 툴
맵 편집기에서 스프라이트가 정확히 그리드에 맞춰 위치하도록 하고 싶다면 이 기능을 사용할 수 있습니다.
gml // 레벨 디자인에서 오브젝트 스냅 if (mouse_check_button_released(mb_left)) { position_x = round(mouse_x / 32) * 32; // 기본 스냅 (32, 32) position_y = round(mouse_y / 32) * 32; }
- 플랫폼 게임의 점프 후 착지
플랫폼 게임에서는 점프 후 착지할 때 캐릭터가 격자에 맞춰 정확하게 떨어지도록 할 수 있습니다.
gml // 점프 후 착지 시 스냅 if (is_jumping) { // 점프 중인 경우 position_y += jump_speed; } else { // 착지 시 스냅 position_y = round(position_y / 32) * 32; }
이러한 예제들은 그래픽 게임 제작에서 인스턴스의 위치를 체계적으로 관리하는 데 유용합니다. ```