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