Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 在Actionscript 3.0中获取角色方向?_Actionscript 3_Flash_Actionscript - Fatal编程技术网

Actionscript 3 在Actionscript 3.0中获取角色方向?

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

我正在创建一个小的多人游戏,我试图找到如何获得方向的鼠标是比较的地方,字符

例如,如果角色位于点A,我希望角色面对的方向发生变化,使其面对鼠标所在的方向

我已经为我的角色制作了方向片,作为指导:


我尝试了许多在线代码/建议/方法,但没有一个对我有效。

您可以使用类似的函数来确定角度:

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等等)。这是一个很好的问题——我将考虑一种更优雅的方法来处理基本方向。