GAME MAKER 강좌
KAYAN
◈ 목표물의 방향측정
목표물의 방향은 아래 함수로 측정할 수 있습니다.
◎ point_direction(x1,y1,x2,y2)
이 함수는 현재 지점(x1,y1)을 기준으로 목표물(x2,y2)을 바라보는 각도를 측정하여 값을 반환합니다.
(▲ 방향 측정)
함수로 반환되는 값은 0~360 사이의 값입니다.
(▲ 방향 측정)
예)
var ex, ey; ex = instance_nearest(x, y, enemy).x; ey = instance_nearest(x, y, enemy).y; direction = point_direction(x, y, ex, ey); |
예시는 현재 위치에서 가까운 enemy 인스턴스의 방향을 측정하여 direction 에 적용합니다.
◈ 목표물과의 거리측정
거리측정에 대해 알아봅시다.
먼저 아래 함수는 (x1,y1)에서 (x2,y2)까지의 거리를 측정하여 값을 반환합니다.
◎ point_distance(x1,y1,x2,y2)
거리를 측정하기위해 간단하게 2개의 위치를 제공하면 거리를 측정할 수 있습니다.
(▲ 거리 측정)
예)
var ex, ey; ex = instance_nearest(x, y, enemy).x; ey = instance_nearest(x, y, enemy).y; if (point_distance(x, y, ex, ey) < 200) { instance_create_layer(x, y, "Bullets", obj_Missile) } |
예시는 현재 위치에서 가까운 enemy 인스턴스와의 거리가 200 미만일 때, obj_Missile 오브젝트를 Bullets 레이어에 생성합니다.
아래 함수는 현재 오브젝트로부터 지정한 오브젝트(obj)까지의 최단 거리를 측정하여 값을 반환합니다.
◎ distance_to_object(obj)
(▲ 거리 측정)
주의할 것은 이 함수로 얻는 거리 값은 현재 오브젝트와 지정한 오브젝트에 지정된 사각형 모양의 충돌 박스 설정 기준으로 측정됩니다.
(▲ 단점 - 사각형 모양의 충돌 박스 설정 기준으로 거리를 측정함)
간단하게 최단 거리를 측정할 수 있으나, 현재 오브젝트와 목표물 오브젝트는 image_angle 회전값에 영향을 받아
측정할 수 있는 충돌 박스의 크기도 늘어나거나 줄어들 수 있어, 측정된 최단거리가 다르게 나타날 수 있습니다.
예)
if (distance_to_object(obj_Player) < 320) { canshoot = true; } |
예시는 현재 오브젝트와 obj_player 오브젝트간의 최단거리가 320 미만일 때 canshoot 변수를 true 값으로 할당합니다.
아래 함수는 현재 오브젝트로부터 지정한 위치(x,y)까지의 최단 거리를 측정하여 값을 반환합니다.
◎ distance_to_point(x,y)
(▲ 거리 측정)
주의할 것은 이 함수로 얻는 거리 값은 현재 오브젝트에 지정된 사각형 모양의 충돌 박스 설정 기준입니다.
distance_to_object 함수와 마찬가지로, 현재 오브젝트는 image_angle 회전값에 영향을 받아 측정할 수 있는
충돌 박스의 크기도 늘어나거나 줄어들 수 있어, 측정된 최단거리가 다르게 나타날 수 있습니다.
예)
if (distance_to_point(obj_Player.x, obj_Player.y) < 320) { canshoot = true; } |
예시는 현재 오브젝트와 지정한 위치까지의 최단거리가 320 미만일 때 canshoot 변수를 true 값으로 할당합니다.
'GameMaker강좌[GMS2] > GMS2기초강좌' 카테고리의 다른 글
[게임메이커 강좌-기초][GMS2] 삼항연산자(? :) (1) | 2023.12.30 |
---|---|
[게임메이커 강좌-기초][GMS2]3D에서의 목표물 거리와 방향측정 (3) | 2023.07.12 |
[게임메이커 강좌-기초][GMS2]게임 재시작 및 종료하기 (1) | 2023.07.11 |
[게임메이커 강좌-기초][GMS2]게임에서 룸 이동 (0) | 2023.07.11 |
[게임메이커 강좌-기초][GMS2]룸 순서 변경 (0) | 2023.07.11 |
댓글