각도 차이 함수 설명
angle_difference
함수는 두 개의 각도 간의 가장 작은 차이를 반환합니다. 이 차이는 원본 각도에서 목표 각도로 계산됩니다. 반환되는 값은 -180도에서 180도 사이이며, 양의 각도는 반시계 방향, 음의 각도는 시계 방향을 의미합니다.
함수 관계
"원본" 각도와 "목표" 각도 간의 관계는 다음과 같습니다. angle_difference(dest, src)
를 호출한 후, 반환된 차이를 src
값에 더하면 dest
각도가 됩니다. 이와 유사한 기법을 사용하여 원본 각도를 목표 각도로 점진적으로 이동시킬 수 있습니다. 예를 들어, 반환된 차이의 10%를 src
에 더하여 dest
방향으로 조금씩 이동할 수 있습니다.
문법
angle_difference(dest, src)
인수 설명
인수 | 유형 | 설명 |
---|---|---|
dest | 각도 | 목표 각도 |
src | 각도 | 원본 각도 |
반환 값
- 각도 차이 (최소 -180도에서 180도 사이)
예제 코드
var _dir = point_direction(x, y, mouse_x, mouse_y);
var _diff = angle_difference(_dir, image_angle);
image_angle += _diff * 0.1;
위 코드는 인스턴스에서 마우스 커서까지의 방향을 가져온 후, 그 각도와 현재 image_angle
간의 차이를 계산합니다. 이 값을 사용하여 인스턴스를 마우스 방향으로 점진적으로 회전시킵니다.
활용 예제
- 자동 회전하는 객체
gml var target_angle = 90; // 목표 각도 var current_angle = image_angle; // 현재 각도 var angle_diff = angle_difference(target_angle, current_angle); image_angle += angle_diff * 0.05; // 5% 만큼 회전
- 플레이어 방향 조정
gml var mouse_direction = point_direction(x, y, mouse_x, mouse_y); var angle_change = angle_difference(mouse_direction, image_angle); image_angle += angle_change * 0.2; // 20% 만큼 회전
- NPC의 시선 조정
gml var npc_target_angle = point_direction(npc_x, npc_y, player_x, player_y); var npc_angle_diff = angle_difference(npc_target_angle, npc_image_angle); npc_image_angle += npc_angle_diff * 0.1; // 10% 만큼 회전
- 회전하는 배경 효과
gml var background_target_angle = (background_angle + 1) % 360; // 배경 각도 증가 var background_angle_diff = angle_difference(background_target_angle, current_background_angle); current_background_angle += background_angle_diff * 0.05; // 5% 만큼 회전
- 자동 조준 시스템
gml var aim_direction = point_direction(x, y, target_x, target_y); var aim_angle_diff = angle_difference(aim_direction, gun_angle); gun_angle += aim_angle_diff * 0.15; // 15% 만큼 회전