2012-07-31 3 views
1

나는 작은 멀티 플레이어 게임을 만들고 있는데, 캐릭터가있는 방향과 마우스를 비교하는 방향을 찾는 방법을 찾고 있습니다 ...Actionscript 3.0에서 캐릭터 방향 가져 오기?

예를 들어 캐릭터가 A 지점에 있다면, 캐릭터가 향하도록하는 방향과 같아서 마우스가있는 방향을 향하고 있습니다. 나는 수많은 온라인 코드/제안/하우투를 시도했습니다

degrees

그리고 그들 중 누구도 나를 위해 작동하지 :

나는 가이드로 따라 내 문자의 방향 무비 클립을 만들었습니다.

답변

1

당신은도 각도를 결정하기 위해 다음과 같은 기능을 사용할 수 있습니다

public static function polarAngle(point:Point, center:Point=null):Number 
{ 
    if (!center) 
     center = new Point(0, 0); 

    var degrees:Number = Geometry.rad2deg(Math.atan2(point.y - center.y, point.x - center.x)); 

    if (degrees < 0) 
     degrees += 360; 

    return degrees; 
} 

이 기능을 사용 point는 캐릭터의 등록 포인트 또는 센터입니다 center에 비해 마우스의 지점입니다.

그래서,이 같은 호출 할 수 있습니다

var angle:Number = polarAngle(new Point(mouseX, mouseY), 
           new Point(character.x, character.y)); 
나는 플래시가 기본 좌표계 사용하는 것이 좋습니다

- 시계 방향으로 회전을 나타내고 0 ~ 180의 값을; 0에서 -180 사이의 값은 반 시계 방향 회전을 나타냅니다. 한 기수 방향 시스템이 변환 당

polar

, 예컨대 내적을 사용하는 것과 아마도 우아한 알고리즘있다; 그러나, 당신은 짐승 수 있습니다 :

if ((angle < 22.5) || (angle > 337.5)) 
    return "e"; 
if (angle < 67.5) 
    return "se"; 
if (angle < 112.5) 
    return "s"; 
if (angle < 157.5) 
    return "sw"; 
if (angle < 202.5) 
    return "w"; 
if (angle < 247.5) 
    return "nw"; 
if (angle < 292.5) 
    return "n"; 
if (angle < 337.5) 
    return "ne"; 
+0

좋아요. 내게 맞는 것을주는 각도를 가지고 있다고 생각해. 배열에서 가장 가까운 숫자를 얻을 수있는 방법을 제안 할 수 있을까? 각 각도 방향 (NE, SE, N, E, S, W .. 등)이있는 각 문자 방향 배열이 있습니다. – Daniel

+0

큰 질문입니다. 추기경에 대한보다 우아한 접근 방법을 생각해 보겠습니다. –

관련 문제