1
我正在創建一個小型多人遊戲,並且我正在嘗試尋找如何獲得鼠標與角色所在位置相比較的方向......在ActionScript 3.0中獲取字符方向?
例如,如果角色位於A點,就像角色面對的方向發生變化,所以它正面向鼠標所在的方向。
我已經按照爲指導創建的方向爲影片剪輯我的性格:
我已經試了無數網上的代碼/建議/ HOWTO和他們沒有爲我工作。
我正在創建一個小型多人遊戲,並且我正在嘗試尋找如何獲得鼠標與角色所在位置相比較的方向......在ActionScript 3.0中獲取字符方向?
例如,如果角色位於A點,就像角色面對的方向發生變化,所以它正面向鼠標所在的方向。
我已經按照爲指導創建的方向爲影片剪輯我的性格:
我已經試了無數網上的代碼/建議/ HOWTO和他們沒有爲我工作。
可以使用這樣的函數來確定度角:
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));
我會建議使用Flash本地座標系 - 值從0到180表示順時針方向旋轉;從0到-180的值表示逆時針旋轉。
每平移這些到基本方向系統中,有可能是優雅的算法,例如使用點積;然而,你可以蠻力:
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";
好吧。我認爲我現在有了一個角度給我一個正確的角度,能夠提出一種方法來獲得陣列中最接近的數字?我有一個數組的每個字符方向與他們各自的角度編號(NE,SE,N,E,S,W ..等)。 – Daniel 2012-07-31 07:23:25
這是一個很好的問題 - 我將思考一種更優雅的方法來指導基本方向。 – 2012-07-31 07:54:41