충돌 사각형 (collision_rectangle) 설명서
collision_rectangle
함수는 현재 방 내에서 사각형 영역을 정의하고, 지정된 객체나 타일 맵과의 충돌 여부를 확인하는 데 사용됩니다. 이 함수는 충돌을 정밀하게 확인할지 여부를 선택할 수 있으며, 코드가 실행되는 인스턴스를 포함할지 여부도 결정할 수 있습니다.
기본 개념
- 사각형 정의: 첫 번째 네 개의 인수 (x1, y1, x2, y2)를 사용하여 사각형의 영역을 정의합니다.
- 충돌 확인: "obj" 인수로 정의된 객체나 타일 맵과의 충돌을 확인합니다.
- 정밀 충돌: 정밀 충돌 여부를 설정할 수 있으며, 객체의 스프라이트와 충돌 함수 모두에서 정밀 옵션이 활성화되어야 합니다.
구문
collision_rectangle(x1, y1, x2, y2, obj, prec, notme);
인수 설명
인수 | 유형 | 설명 |
---|---|---|
x1 | 실수 | 확인할 사각형의 왼쪽 x 좌표 |
y1 | 실수 | 확인할 사각형의 위쪽 y 좌표 |
x2 | 실수 | 확인할 사각형의 오른쪽 x 좌표 |
y2 | 실수 | 확인할 사각형의 아래쪽 y 좌표 |
obj | 객체 자산 또는 객체 인스턴스 또는 타일 맵 요소 ID 또는 배열 | 충돌을 확인할 객체, 인스턴스, 타일 맵 ID, 키워드 all/other 또는 이러한 항목을 포함하는 배열 |
prec | 불리언 | 정밀 충돌 여부 (true: 느림, false: 빠름) |
notme | 불리언 | 호출 인스턴스를 제외할지 여부 (true: 제외, false: 포함) |
반환값
- 객체 인스턴스 또는 타일 맵 요소 ID 또는 noone
활용 예제
예제 1: 기본 충돌 확인
var inst;
inst = collision_rectangle(50, 50, 200, 100, obj_Ball, false, true);
if (inst != noone) {
instance_destroy(inst);
}
이 코드는 방의 (50, 50)에서 (200, 100)까지의 영역에서 "obj_Ball" 객체의 충돌을 확인합니다. 반환값이 noone
이 아닐 경우 해당 객체를 파괴합니다.
예제 2: 정밀 충돌 확인
var inst;
inst = collision_rectangle(100, 100, 300, 200, obj_Ball, true, false);
if (inst != noone) {
// 충돌한 객체에 대해 특정 작업 수행
}
이 코드는 정밀 충돌을 사용하여 (100, 100)에서 (300, 200)까지의 영역에서 "obj_Ball" 객체와의 충돌을 확인합니다.
예제 3: 여러 객체와의 충돌 확인
var inst_list;
inst_list = collision_rectangle_list(0, 0, 400, 300, obj_Ball, false, false);
for (var i = 0; i < array_length(inst_list); i++) {
instance_destroy(inst_list[i]);
}
이 코드는 (0, 0)에서 (400, 300)까지의 영역에서 모든 "obj_Ball" 객체와의 충돌을 확인하고, 충돌한 모든 객체를 파괴합니다.
예제 4: 특정 객체 제외
var inst;
inst = collision_rectangle(50, 50, 200, 100, obj_Ball, false, true);
if (inst != noone) {
// 현재 인스턴스를 제외하고 충돌한 객체에 대해 작업 수행
}
이 코드는 현재 인스턴스를 제외하고 충돌한 "obj_Ball" 객체를 확인합니다.
이와 같은 방식으로 collision_rectangle
함수를 활용하여 다양한 충돌 감지 및 처리를 구현할 수 있습니다.