가끔 인스턴스가 특정 좌표값을 바라보게 하고 싶은 경우가 있습니다.
예를들면 위와같이 마우스커서를 바라보는 인스턴스요.
인스턴스와 마우스커서가 위치하는 좌표 사이의 각만큼 인스턴스를 회전시키면 됩니다. 그러기위해선 일단 각도를 구해야하는데..
위와같은 직각삼격형의 밑변과 높이를 알고있다면 각도θ는
과 같이 구할 수 있습니다.
게임메이커 함수중에 arctan2(y, x) 를 이용하여, 삼각형의 높이와 밑변의 길이를 매개변수로 전달하여 아크탄젠트값을 구해줍니다.
인스턴스의 좌표와 마우스커서의 좌표를 꼭짓점으로 두는 직각삼각형을 만든다면..
삼각형의 높이는 mouse_y 값에서 현재 인스턴스 y값을 뺀 값,
밑변의 길이는 인스턴스 x값에서 mouse_x 를 뺀 값일겁니다.
따라서 arctan2(mouse_y - y, x - mouse_x) 와 같이 작성하면 되겠죠. 그런데, 저는 코드에서 180/pi 만큼 곱해준 부분이 있습니다.
그 이유는 arctan2 에서 구해지는 값은 '라디안(radian)' 값이기 때문에 우리가 흔히 알고있는 '도(degress)' 와는 다른 값을 가집니다.
때문에 우리가 흔히 알고 사용하는 '도' 단위의 degress값으로 변환해 줄 필요가 있습니다. 그 변환과정이 radian * 180/pi가 되는거죠.
(관련 지식은 네이버를 이용하심이..)
물론 일반적으로는 삼각함수를 이용해서 각도를 구하겠지만 게임메이커 스튜디오에서는 친절하게도 직접 각도를 계산하지 않고
위 코드와 같이 'point_direction' 함수를 이용하면 쉽게 각도값을 얻어올 수 있답니다.
예제 소스 파일
예제 실행 파일
그냥 point_direction 쓰세요.
'GMStudio > GMS 팁/예제' 카테고리의 다른 글
게임메이커 스튜디오 :: 파일 입출력을 이용한 게임데이터 저장하고 불러오기 (6) | 2015.10.01 |
---|---|
게임메이커 스튜디오 :: 잔상효과(afterimage) 구현하기 (0) | 2015.09.28 |
게임메이커 스튜디오 :: 응용프로그램(.exe) 파일 뽑기 (0) | 2015.06.09 |
게임메이커 스튜디오 :: 스킨 바꾸기 (0) | 2015.05.30 |
최고의 교과서, 게임메이커 스튜디오 도움말 (0) | 2015.05.30 |