3D 포인트 거리 계산 함수
이 문서는 3D 공간에서 두 점 사이의 거리를 계산하는 point_distance_3d
함수에 대해 설명합니다. 이 함수는 벡터의 구성 요소를 입력받아 벡터의 길이(거리)를 반환합니다. point_distance()
함수와 동일하게 작동하지만, Z값(깊이)을 추가로 고려하여 3D 공간에서 사용됩니다.
문법
point_distance_3d(x1, y1, z1, x2, y2, z2);
매개변수 설명
매개변수 | 타입 | 설명 |
---|---|---|
x1 | 숫자 | 첫 번째 벡터의 x 좌표 |
y1 | 숫자 | 첫 번째 벡터의 y 좌표 |
z1 | 숫자 | 첫 번째 벡터의 z 좌표 |
x2 | 숫자 | 두 번째 벡터의 x 좌표 |
y2 | 숫자 | 두 번째 벡터의 y 좌표 |
z2 | 숫자 | 두 번째 벡터의 z 좌표 |
반환값
이 함수는 두 점 사이의 거리(길이)를 반환합니다.
활용 예제
아래는 point_distance_3d
함수를 활용한 코드 예제입니다.
예제 1: 적과의 거리 체크
var inst, ex, ey, ez;
inst = instance_nearest(x, y, enemy);
if (instance_exists(inst)) {
ex = inst.x;
ey = inst.y;
ez = inst.z;
if (point_distance_3d(x, y, z, ex, ey, ez) < 200) {
instance_create_layer(x, y, "Bullets", obj_Missile);
}
}
이 코드는 가장 가까운 적의 x, y, z 좌표를 가져와서 플레이어 좌표와 형성된 벡터의 거리를 확인합니다. 만약 거리가 200보다 작으면 "obj_Missile"의 인스턴스를 생성합니다.
예제 2: 플레이어와 아이템 간 거리 계산
var item_inst, item_x, item_y, item_z;
item_inst = instance_nearest(x, y, item);
if (instance_exists(item_inst)) {
item_x = item_inst.x;
item_y = item_inst.y;
item_z = item_inst.z;
if (point_distance_3d(x, y, z, item_x, item_y, item_z) < 100) {
// 아이템을 수집하는 코드
}
}
이 코드는 플레이어와 가장 가까운 아이템 간의 거리를 계산하여, 거리가 100보다 작으면 아이템을 수집하는 동작을 수행합니다.
예제 3: 적의 공격 범위 확인
var enemy_inst, enemy_x, enemy_y, enemy_z;
enemy_inst = instance_nearest(x, y, enemy);
if (instance_exists(enemy_inst)) {
enemy_x = enemy_inst.x;
enemy_y = enemy_inst.y;
enemy_z = enemy_inst.z;
if (point_distance_3d(x, y, z, enemy_x, enemy_y, enemy_z) < 150) {
// 적의 공격을 받는 코드
}
}
이 코드는 적과의 거리를 계산하여, 거리가 150보다 작으면 적의 공격을 받는 동작을 수행합니다.