Actionscript 3 在Actionscript 3.0中获取角色方向?
我正在创建一个小的多人游戏,我试图找到如何获得方向的鼠标是比较的地方,字符 例如,如果角色位于点A,我希望角色面对的方向发生变化,使其面对鼠标所在的方向 我已经为我的角色制作了方向片,作为指导:Actionscript 3 在Actionscript 3.0中获取角色方向?,actionscript-3,flash,actionscript,Actionscript 3,Flash,Actionscript,我正在创建一个小的多人游戏,我试图找到如何获得方向的鼠标是比较的地方,字符 例如,如果角色位于点A,我希望角色面对的方向发生变化,使其面对鼠标所在的方向 我已经为我的角色制作了方向片,作为指导: 我尝试了许多在线代码/建议/方法,但没有一个对我有效。您可以使用类似的函数来确定角度: public static function polarAngle(point:Point, center:Point=null):Number { if (!center) center
我尝试了许多在线代码/建议/方法,但没有一个对我有效。您可以使用类似的函数来确定角度:
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;
}
我建议使用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";
if((角度<22.5)| |(角度>337.5))
返回“e”;
如果(角度<67.5)
返回“se”;
如果(角度<112.5)
返回“s”;
如果(角度<157.5)
返回“sw”;
如果(角度<202.5)
返回“w”;
如果(角度<247.5)
返回“nw”;
如果(角度<292.5)
返回“n”;
如果(角度<337.5)
返回“ne”;
您可以使用如下函数来确定角度:
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;
}
我建议使用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";
if((角度<22.5)| |(角度>337.5))
返回“e”;
如果(角度<67.5)
返回“se”;
如果(角度<112.5)
返回“s”;
如果(角度<157.5)
返回“sw”;
如果(角度<202.5)
返回“w”;
如果(角度<247.5)
返回“nw”;
如果(角度<292.5)
返回“n”;
如果(角度<337.5)
返回“ne”;
好的。我想我现在已经得到了正确的角度,能不能建议一种方法来获得数组中最接近的数字?我有一个每个字符方向的数组,以及它们各自的角度数(NE、SE、N、E、S、W…等等)。这是一个很好的问题-我将考虑一种更优雅的方法来处理基本方向。好的。我想我现在已经得到了正确的角度,能不能建议一种方法来获得数组中最接近的数字?我有一个每个字符方向的数组,以及它们各自的角度数(NE、SE、N、E、S、W等等)。这是一个很好的问题——我将考虑一种更优雅的方法来处理基本方向。