【问题标题】:Top down strafing (facing mouse)自上而下扫射(面对鼠标)
【发布时间】:2014-03-02 18:08:15
【问题描述】:

如何让我的角色扫射?他总是面对鼠标

        this.rotation = Math.atan2((stage.mouseY - this.y), (stage.mouseX - this.x)) * 180/ Math.PI + 90;

如何让他按住一个键时向左扫射?

            if(leftKeyDown)
            {
                if(!this.hitTestObject(_root.container_wall))
                {
                    gotoAndStop(2);
                    //WHAT TO TYPE HERE?
                }
            }

【问题讨论】:

    标签: actionscript-3 rotation mouse direction trigonometry


    【解决方案1】:

    据我所知...

    为左

    x += Math.cos((rotation + 90)*Math.PI/-180)*speed;
    y += Math.sin((rotation + 90)*Math.PI/-180)*speed;
    

    对的

    x += Math.cos((rotation - 90)*Math.PI/-180)*speed;
    y += Math.sin((rotation - 90)*Math.PI/-180)*speed;
    

    返回

    x += Math.cos((rotation + 180)*Math.PI/-180)*speed;
    y += Math.sin((rotation + 180)*Math.PI/-180)*speed;
    

    前锋

    x += Math.cos((rotation)*Math.PI/-180)*speed;
    y += Math.sin((rotation)*Math.PI/-180)*speed;
    

    【讨论】:

    • 但是我刚刚意识到你已经将旋转转换为弧度,所以你不需要 Math.Pı/-180 的东西。
    • 只有当我将鼠标放在某个位置时,角色才会扫射。他并不总是朝正确的方向移动(有时当我按住左键时他会向后退,具体取决于鼠标所在的位置)。
    • 你应该意识到没有办法制作你想要的东西,想想看,你正在寻找一些不可能的东西作为逻辑。哈?明白你的意思。但!您必须使用 stage3D 或类似的东西,我的意思是,您必须使用一个平台,让您通过代码更改鼠标指针的位置。但是纯flash不允许你控制用户的光标点。您所需要的只是改变相对于玩家位置的鼠标位置。
    • 但它在逻辑上确实有效。扫射意味着角色只是向左或向右走,仍然面向鼠标。本质上,角色将围绕鼠标运行..
    • 啊,这样更好,那可能是你加“+90;”的问题到你的旋转和你的旋转设置功能的结束。您只需尝试从我发送给您的整个代码行中添加或减去“90”。我的意思是,将 (rotation + 90) 更改为 (rotation + 90 - 90) 或 (rotation + 90 + 90)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-24
    • 1970-01-01
    相关资源
    最近更新 更多