【问题标题】:Getting character direction in Actionscript 3.0?在 Actionscript 3.0 中获取角色方向?
【发布时间】:2012-07-31 06:51:14
【问题描述】:

我正在创建一个小型多人游戏,并试图找到如何将鼠标的方向与角色所在的位置进行比较...

例如,如果角色在 A 点,我希望角色面对的方向改变,使其朝向鼠标所在的方向。

我按照以下指导为我的角色创建了方向影片剪辑:

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

【问题讨论】:

    标签: actionscript-3 flash actionscript


    【解决方案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));
    

    我建议使用 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.. 等)。
    • 这是一个很好的问题 - 我会考虑一种更优雅的基本方向方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-12
    • 1970-01-01
    相关资源
    最近更新 更多