본문 바로가기
GameMaker강좌[GM8]/기초강좌

[게임메이커강좌-기초]방향 및 거리 측정

by 타락카얀 2014. 7. 9.
728x90



GAME MAKER 강좌



KAYAN



이번 강좌에서는 특정 좌표에 대한 방향 및 거리 측정에 대해 알아보도록 합시다.



(▲ 방향과 거리는 얼마나 될까요?)





◈ 방향 측정



먼저 좌표에 대한 방향 측정은 아래의 함수를 사용하여 구할 수 있습니다.

     point_direction(x1,y1,x2,y2)

이 함수는 (x1, y1)좌표에서 (x2, y2)좌표를 향한 방향을 구할 때 사용합니다.



(▲ 방향 측정)


사용법은 간단합니다.
(x1, y1)은 기준 점을 지정하면 되고, (x2, y2)는 목표 지점을 지정하면 됩니다.


     예) direction = point_direction(x,y,320,240)


이렇게 하면 현재 오브젝트의 (x, y)좌표에서 (320, 240)좌표를 향한 각도를 direction에 할당하게

됩니다.





◈ 거리 측정



다음은 거리 측정 방법에 대해 알아보도록 합시다.



(▲ 두 좌표간의 거리 측정)


(x1, y1)과 (x2, y2) 두 좌표간의 거리를 측정하는데 아래의 함수를 사용합니다.

     point_distance(x1,y1,x2,y2)

(x1, y1)좌표는 기준 점을 지정하면 되고, (x2, y2)는 목표 지점을 지정하면 됩니다.


또한 오브젝트를 통한 거리를 측정할 때 사용하는 특별한 함수도 있습니다.

     distance_to_point(x,y)

이 함수는 아래의 그림과 같이 오브젝트의 마스크를 기준으로 (x, y) 좌표 사이의 최단 거리를 측정할 때

사용합니다.



(▲ 오브젝트의 마스크 기준으로 좌표간의 최단 거리 측정)


이 함수는 오브젝트의 마스크를 이용한 측정 방식이기 때문에 현재 오브젝트에 스프라이트 이미지 또는
특정 마스크 이미지가 지정되어 있어야 거리를 제대로 구할 수 있어요.

두 오브젝트 사이의 최단 거리를 측정할 수 있는 아래와 같은 함수가 있습니다.

     distance_to_object(obj)

이 함수는 현재 오브젝트와 지정한 (obj) 오브젝트 사이의 최단 거리를 측정할 수 있습니다.



(▲ 두 오브젝트 사이의 최단 거리 측정)


두 오브젝트의 마스크를 이용한 거리 측정 방식이기 때문에 현재 오브젝트와 측정할 오브젝트에
스프라이트 이미지 또는 특정 마스크 이미지가 지정되어있어야 합니다.


참고로 distance_to_pointdistance_to_object는 오브젝트의 마스크를 이용하여 최단 거리를

측정할 때 유용하지만, image_angle로 회전시킬 경우 마스크에 영향을 주어 측정하는 거리가

달라질 수 있는 단점이 있습니다.



(▲ 마스크 자체가 회전할 경우 측정 거리가 전혀 달라 질 수 있음)


즉, 위와 같이 회전하더라도 마스크 모양대로 체크하는 것이 아니라, 그 틀에 맞게 사각형 틀(빨간색

사각형 참고)기준으로 거리를 측정하게 되어 예상과는 달리 전혀 다른 값이 나올 수 있다는 점을

유의하세요.






300x250

댓글