place_empty 함수 설명
place_empty
함수는 호출하는 인스턴스가 게임 내 다른 인스턴스와 충돌하는지를 확인하는 데 사용됩니다. 이 충돌이 올바르게 해결되기 위해서는 코드를 실행하는 인스턴스가 유효한 충돌 마스크를 가져야 합니다. 충돌 마스크는 스프라이트 자체의 마스크이거나 mask_index
를 통해 설정된 마스크일 수 있습니다. 이 함수는 특정 위치에 호출 인스턴스를 배치했을 때 충돌이 없는지를 테스트합니다. 선택적 인수를 제공하면 특정 유형의 인스턴스와의 충돌 여부만 확인할 수 있습니다. 선택적 객체 ID가 제공되지 않으면 방 내의 모든 인스턴스와 충돌 여부를 확인합니다.
충돌 체크는 선택한 충돌 마스크의 종류에 따라 정밀하거나 경계 상자 기반으로 수행됩니다. 정밀 충돌이 올바르게 작동하려면 체크하는 모든 인스턴스가 정밀 충돌 마스크를 가져야 합니다.
문법
place_empty(x, y, [object_id]);
인수 설명
인수 | 유형 | 설명 |
---|---|---|
x | Real | 확인할 x 위치 |
y | Real | 확인할 y 위치 |
[object_id] | Object Asset / Object Instance / Tile Map Element ID / Array (선택적) | 객체, 인스턴스, 타일 맵 ID, 키워드(all/other), 또는 이러한 항목을 포함하는 배열 |
반환값
- Boolean: 충돌이 없으면 true, 충돌이 있으면 false를 반환합니다.
활용 예제
- 마우스 위치에 적 인스턴스가 없는지 확인하기
if (place_empty(mouse_x, mouse_y, obj_Enemy)) {
x = mouse_x;
y = mouse_y;
}
- 플레이어가 특정 위치에 이동할 수 있는지 확인하기
if (place_empty(player.x + 10, player.y, obj_Obstacle)) {
player.x += 10;
}
- 적이 특정 위치에 이동할 수 있는지 확인하기
if (place_empty(enemy.x, enemy.y + 5, obj_Player)) {
enemy.y += 5;
}
- 타일 맵의 특정 위치에 충돌이 없는지 확인하기
if (place_empty(tile_x, tile_y, tile_map_id)) {
// 타일을 배치할 수 있음
}
- 모든 인스턴스와의 충돌 여부 확인하기
if (place_empty(x, y)) {
// 이동 가능
}
이 함수는 게임 내에서 인스턴스의 위치를 조정할 때 유용하게 사용될 수 있으며, 충돌을 피하는 데 중요한 역할을 합니다.