충돌 점 검사 (collision_point)
collision_point
함수는 주어진 x, y 좌표에서 특정 객체나 타일 맵과의 충돌 여부를 확인합니다. 이 함수는 정밀 충돌 검사 또는 일반 충돌 검사를 수행할 수 있으며, 정밀 충돌 검사를 사용하려면 검사하는 객체의 스프라이트에서도 정밀 충돌이 활성화되어 있어야 합니다. 그렇지 않으면 기본적으로 경계 상자(bounding box)를 기준으로 충돌 검사를 수행합니다.
함수 설명
인수 이름 | 유형 | 설명 |
---|---|---|
x | Real | 검사할 점의 x 좌표 |
y | Real | 검사할 점의 y 좌표 |
obj | Object Asset 또는 Object Instance 또는 Tile Map Element ID 또는 Array | 객체, 인스턴스, 타일 맵 ID, 키워드(all/other) 또는 이러한 항목을 포함하는 배열 |
prec | Boolean | 정밀 충돌 검사 여부 (true: 정밀 검사, false: 일반 검사) |
notme | Boolean | 호출 인스턴스를 제외할지 여부 (true: 제외, false: 포함) |
반환 값
- Object Instance 또는 Tile Map Element ID 또는 noone
예제 코드
아래는 collision_point
함수를 사용하는 예제입니다:
if (collision_point(x, y, obj_Cursor, false, true) != noone) {
score += 10;
}
이 코드는 "obj_Cursor" 객체의 위치에서 충돌을 검사하고, 충돌이 발생하면 점수에 10을 추가합니다.
활용 예제
- 플레이어와 적의 충돌 검사
gml if (collision_point(player.x, player.y, obj_Enemy, true, false)) { player.health -= 1; }
- 아이템 수집
gml if (collision_point(player.x, player.y, obj_Item, false, true)) { item_collected = true; instance_destroy(obj_Item); }
- 타일 맵과의 충돌 검사
gml if (collision_point(x, y, tilemap, true, false)) { // 타일과 충돌 시 처리 }
- 정밀 충돌을 통한 장애물 회피
gml if (collision_point(x + speed, y, obj_Obstacle, true, false)) { speed = 0; // 장애물과 충돌 시 속도 0 }
- 특정 영역 내 객체 확인
gml if (collision_point(mouse_x, mouse_y, obj_Button, false, false)) { // 버튼 클릭 처리 }
이와 같이 collision_point
함수는 다양한 게임 로직에서 충돌 검사를 수행하는 데 유용하게 사용될 수 있습니다.