드레그한 방향 알아내기
두 백터(Vector3) 사이에 임계치(threshold)를 넘어간 거리를 이동한 경우 방향(8방향 기준)을 알아내는 함수가 필요해서 제작해봄.
private enum DIRECTION {LEFT_DOWN = 1, DOWN, RIGHT_DOWN, LEFT, CENTER, RIGHT, LEFT_UP, UP, RIGHT_UP};
DIRECTION GetDirection8Way(Vector3 begin, Vector3 end, int threshold) {
double length = System.Math.Sqrt(System.Math.Pow(end.x - begin.x, 2) + System.Math.Pow(end.y - begin.y, 2));
if (length < threshold) return DIRECTION.CENTER;
double arc = System.Math.Round(System.Math.Atan2(end.y - begin.y, end.x - begin.x) * 180 / System.Math.PI);
if (arc < 0) arc = arc + 360;
if (((0 <= arc) && (22 > arc)) || ((337 <= arc) && (360 > arc))) {
return DIRECTION.RIGHT;
} else if ((22 <= arc) && (67 > arc)) {
return DIRECTION.RIGHT_UP;
} else if ((67 <= arc) && (112 > arc)) {
return DIRECTION.UP;
} else if ((112 <= arc) && (157 > arc)) {
return DIRECTION.LEFT_UP;
} else if ((157 <= arc) && (202 > arc)) {
return DIRECTION.LEFT;
} else if ((202 <= arc) && (247 > arc)) {
return DIRECTION.LEFT_DOWN;
} else if ((247 <= arc) && (292 > arc)) {
return DIRECTION.DOWN;
} else if ((292 <= arc) && (337 > arc)) {
return DIRECTION.RIGHT_DOWN;
} else {
return DIRECTION.CENTER;
}
}