`instance_activate_region` 함수 설명
이 문서에서는 instance_activate_region 함수에 대해 설명합니다. 이 함수는 방 안의 특정 영역을 정의하여 이전에 비활성화된 인스턴스들을 활성화할 수 있게 하는 기능입니다. 이 영역은 "내부" 또는 "외부"로 표시될 수 있으며, 아래 이미지와 같이 구현됩니다:
위 이미지에서 볼 수 있듯이, "apple" 인스턴스는 스프라이트가 영역과 겹치지 않더라도 바운딩 박스가 겹치기 때문에 항상 활성화됩니다. 즉, 인스턴스는 바운딩 박스가 지정된 영역과 겹치는 경우 내부로 간주되며, 충돌 마스크의 상태(정확하거나 아닌지)는 고려되지 않습니다.
활성화는 즉각적이지 않으며, 이렇게 활성화된 인스턴스는 함수가 호출된 이벤트의 끝까지는 활성 상태로 간주되지 않습니다.
구문
instance_activate_region(left, top, width, height, inside);
인자 설명
| 인자 | 타입 | 설명 |
|---|---|---|
| left | Real | 활성화할 직사각형 영역의 왼쪽 x 좌표 |
| top | Real | 활성화할 직사각형 영역의 위쪽 y 좌표 |
| width | Real | 활성화할 영역의 너비 |
| height | Real | 활성화할 영역의 높이 |
| inside | Boolean | 인스턴스를 활성화할 영역의 내부(true) 또는 외부(false)를 지정 |
반환값
없음 (N/A)
예제 코드
다음은 instance_activate_region 함수를 사용하는 예입니다:
// 모든 인스턴스를 비활성화하고 지정된 영역을 활성화합니다.
instance_deactivate_all(true);
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_activate_region(_vx - 64, _vy - 64, _vw + 128, _vh + 128, false);
위 코드에서는 먼저 모든 인스턴스를 비활성화한 다음, 실행 중인 코드에 속한 인스턴스를 제외한 방 안의 특정 영역을 활성화합니다.
활용 및 응용 예제
- 게임에서 적 인스턴스 활성화
특정 지역에 플레이어가 접근할 때 적 인스턴스를 활성화할 수 있습니다.
gml if (distance_to_object(player) < 300) { instance_activate_region(x - 100, y - 100, 200, 200, true); }
- 존에 따른 인스턴스 비활성화
특정 지역에 들어왔을 때 모든 인스턴스를 비활성화하여 게임의 난이도를 조절할 수 있습니다.
gml instance_deactivate_region(x - 50, y - 50, 100, 100, true);
- 맵 스크롤링과 함께 인스턴스 관리
카메라가 이동할 때 시야에 들어오는 인스턴스들만 활성화하는 방식으로 성능을 최적화할 수 있습니다.
```gml var _x = camera_get_view_x(view_camera[0]); var _y = camera_get_view_y(view_camera[0]); var _w = camera_get_view_width(view_camera[0]); var _h = camera_get_view_height(view_camera[0]);
instance_activate_region(_x, _y, _w, _h, true); ```
참조
© Copyright YoYo Games Ltd. 2023 All Rights Reserved.