distance_to_object 함수 설명
distance_to_object
함수는 호출 인스턴스의 경계 상자(edge of the bounding box)에서 지정된 객체의 가장 가까운 인스턴스의 가장자리까지의 거리를 계산합니다. 이 객체는 객체 인덱스(object index)나 특정 인스턴스 ID, 또는 키워드 other
일 수 있으며, 거리는 픽셀 단위로 반환됩니다. 주의할 점은, 두 객체 중 하나라도 스프라이트(sprite)나 마스크(mask)가 정의되어 있지 않으면 결과가 부정확할 수 있다는 것입니다.
문법
distance_to_object(obj);
인수
인수 | 유형 | 설명 |
---|---|---|
obj | Object Asset or Instance ID | 확인할 객체 |
반환값
- 실수형(Real)
예제
아래 코드는 플레이어 객체와의 거리를 확인하고, 그 거리가 변수 "range"에 저장된 값보다 작으면 "canshoot" 변수를 true로 설정합니다.
if (distance_to_object(obj_Player) < range) {
canshoot = true;
}
활용 예제
- 적과의 거리 확인
gml if (distance_to_object(obj_Enemy) < 100) { // 적이 가까이 있음 alarm[0] = 30; // 30초 후 공격 }
- 아이템 수집
gml if (distance_to_object(obj_Item) < 50) { // 아이템을 수집 instance_destroy(obj_Item); score += 10; // 점수 증가 }
- NPC와의 상호작용
gml if (distance_to_object(obj_NPC) < 75) { // NPC와 대화 가능 show_message("안녕하세요!"); }
- 플레이어와의 거리 기반 행동
gml if (distance_to_object(obj_Player) < 200) { // 플레이어가 가까이 오면 도망가기 direction = point_direction(x, y, obj_Player.x, obj_Player.y); speed = 5; // 도망가는 속도 }
- 게임 오브젝트의 상태 변화
gml if (distance_to_object(obj_Trigger) < 10) { // 특정 트리거에 도달하면 상태 변화 state = "activated"; }
이와 같은 방식으로 distance_to_object
함수를 활용하여 다양한 게임 로직을 구현할 수 있습니다.