충돌 원(collision_circle) 함수 설명
collision_circle
함수는 사용자가 지정한 반지름을 가진 원형 영역을 생성하고, 해당 영역이 특정 객체, 인스턴스 또는 타일 맵과 충돌하는지를 검사합니다. 이 검사는 정밀하게 수행될 수도 있고, 그렇지 않을 수도 있습니다. 정밀 충돌을 사용하려면 검사하는 객체나 인스턴스의 스프라이트에도 정밀 충돌이 활성화되어 있어야 합니다. 그렇지 않으면 기본적으로 경계 상자(bounding box)를 기준으로 충돌 검사가 이루어집니다.
함수 사용법
문법
collision_circle(x1, y1, rad, obj, prec, notme);
매개변수 설명
매개변수 | 유형 | 설명 |
---|---|---|
x1 | 실수 | 검사할 원의 중심 x 좌표 |
y1 | 실수 | 검사할 원의 중심 y 좌표 |
rad | 실수 | 원의 반지름 (중심에서 가장자리까지의 거리, 픽셀 단위) |
obj | 객체 자산 또는 객체 인스턴스 또는 타일 맵 요소 ID 또는 배열 | 검사할 객체, 인스턴스, 타일 맵 ID, 키워드 all/other 또는 이 항목들을 포함하는 배열 |
prec | 불리언 | 픽셀 완벽 충돌(true = 느림) 또는 일반적인 경계 상자(false = 빠름) 기반의 검사 여부 |
notme | 불리언 | 호출 인스턴스가 관련이 있을 경우 제외할지 여부(true) 또는 포함할지 여부(false) |
반환값
- 객체 인스턴스 또는 타일 맵 요소 ID 또는 noone
활용 예제
아래는 collision_circle
함수를 활용한 몇 가지 예제입니다.
예제 1: 충돌 검사
if (collision_circle(x, y, 20, obj_Cursor, false, true) != noone) {
image_index = 1;
} else {
image_index = 0;
}
위 코드는 반지름 20픽셀의 원형 영역에서 "obj_Cursor"와의 충돌을 검사합니다. 충돌이 발생하면 image_index
를 1로 설정하고, 그렇지 않으면 0으로 설정합니다.
예제 2: 정밀 충돌 검사
if (collision_circle(x, y, 30, obj_Player, true, false) != noone) {
// 플레이어와의 정밀 충돌 처리
}
이 코드는 반지름 30픽셀의 원형 영역에서 "obj_Player"와의 정밀 충돌을 검사합니다.
예제 3: 여러 객체와의 충돌 검사
var collision_result = collision_circle(x, y, 50, all, false, false);
if (collision_result != noone) {
// 충돌한 객체에 대한 처리
}
이 코드는 반지름 50픽셀의 원형 영역에서 모든 객체와의 충돌을 검사합니다.
예제 4: 충돌 발생 시 효과 적용
if (collision_circle(x, y, 40, obj_Enemy, false, false) != noone) {
// 적과의 충돌 시 체력 감소
health -= 10;
}
이 코드는 반지름 40픽셀의 원형 영역에서 "obj_Enemy"와의 충돌을 검사하고, 충돌이 발생하면 체력을 10 감소시킵니다.