인스턴스 비활성화 영역 (instance_deactivate_region)
이 함수는 방 내에서 인스턴스를 비활성화할 수 있는 특정 지역을 정의합니다. 이 지역은 "내부" 또는 "외부"로 표시될 수 있습니다. 아래 이미지를 보면 설명을 이해하는 데 도움이 됩니다.
개념 설명
위 이미지에서 "사과" 인스턴스는 항상 비활성화되어 있습니다. 이유는 스프라이트가 지역과 겹치지 않더라도, 바운딩 박스가 겹치기 때문입니다. 따라서, 인스턴스는 바운딩 박스가 지정된 지역과 겹칠 때 그 지역 내에 있다고 간주되며, 충돌 마스크의 상태(정확한지 아닌지)는 고려되지 않습니다.
비활성화는 즉시 이루어지지 않으며, 이 함수로 비활성화된 인스턴스는 함수 호출이 종료될 때까지 비활성화된 상태로 간주되지 않습니다.
문법
instance_deactivate_region(left, top, width, height, inside, notme);
매개변수 설명
| 매개변수 | 유형 | 설명 |
|---|---|---|
| left | Real | 비활성화할 사각형 지역의 왼쪽 x 좌표 |
| top | Real | 비활성화할 사각형 지역의 위쪽 y 좌표 |
| width | Real | 비활성화할 지역의 너비 |
| height | Real | 비활성화할 지역의 높이 |
| inside | Boolean | 지역 내부의 인스턴스를 비활성화할지 여부 (true) |
| notme | Boolean | 호출 인스턴스를 비활성화에서 제외할지 여부 (true) |
반환값
N/A
예제 코드
아래 코드는 모든 인스턴스를 활성화한 후 방 내의 특정 지역을 비활성화하는 예제입니다.
instance_activate_all();
var _vx = camera_get_view_x(view_camera[0]);
var _vy = camera_get_view_y(view_camera[0]);
var _vw = camera_get_view_width(view_camera[0]);
var _vh = camera_get_view_height(view_camera[0]);
instance_deactivate_region(_vx - 64, _vy - 64, _vw + 128, _vh + 128, false, false);
다양한 활용 및 응용 예제
- 적 비활성화
게임에서 특정 아군 캐릭터가 적과 일정 거리 이상 떨어지면 적을 비활성화하여 성능을 최적화할 수 있습니다.
gml var region_x = player.x - 200; var region_y = player.y - 200; instance_deactivate_region(region_x, region_y, 400, 400, false, true);
- 아이템 비활성화
유저가 지나간 아이템을 비활성화하여 중복 수집을 방지할 수 있습니다.
gml if (instance_exists(item)) { instance_deactivate_region(item.x - 10, item.y - 10, 20, 20, true, false); }
- 연출용 비활성화
스크립트에서 특정 애니메이션이 끝났을 때 배경 요소나 NPC를 비활성화하여 게임의 몰입감을 높일 수 있습니다.
gml if (animation_finished) { instance_deactivate_region(0, 0, room_width, room_height, true, false); }
이와 같이 instance_deactivate_region 함수를 활용하여 성능 최적화와 게임플레이 향상에 기여할 수 있습니다.