Actionscript 3 轮换问题

Actionscript 3 轮换问题,actionscript-3,Actionscript 3,我很难完全理解这个旋转函数。我有一个炮塔,应该朝着另一个移动的物体旋转。它应该找到最短的旋转方向 基本上,我所做的是将动作脚本从使用-1->179转换为180->359。但是现在,当它跟踪的物体经过零点时,我遇到了问题。旋涡然后绕着另一个方向旋转 这是代码。我的脑子有点糊涂了。正在传递对象之间的x差和y差 public function Move(xdiff:Number,ydiff:Number){ var currentRotation:Number; rot

我很难完全理解这个旋转函数。我有一个炮塔,应该朝着另一个移动的物体旋转。它应该找到最短的旋转方向

基本上,我所做的是将动作脚本从使用-1->179转换为180->359。但是现在,当它跟踪的物体经过零点时,我遇到了问题。旋涡然后绕着另一个方向旋转

这是代码。我的脑子有点糊涂了。正在传递对象之间的x差和y差

public function Move(xdiff:Number,ydiff:Number){
        var currentRotation:Number;
        rot = Math.round(Math.atan(ydiff/xdiff) * (180/Math.PI));
        if(xdiff < 0){
            //this.rotation = 180 + rot;
            rot = rot + 180
        }else{
            //this.rotation = rot;
        }
        if(rot < 0 && rot > -90){
            rot = 270 + 90 + rot;
        }
        trace("idealrotation: " + rot + "currentrotation: " + rotation);
        currentRotation = rotation;
        if(currentRotation < 0){
            currentRotation += 360;
        }
        if(rot - currentRotation > 0){
            if(Math.abs(rot-currentRotation) < 5){
                rotation = rot;
            }else{
                rotation += rotationSpeed;
            }
        }else if(rot - currentRotation < 0){
            if(Math.abs(rot-currentRotation) < 5){
                rotation = rot;
            }else{
                rotation -= rotationSpeed;
            }
        }else{
            rotation = rot;
        }

        //this.rotation = rot;
    }
公共功能移动(xdiff:Number,ydiff:Number){
var电流旋转:数字;
rot=数学圆(数学圆(ydiff/xdiff)*(180/Math.PI));
if(xdiff<0){
//这个旋转=180+旋转;
旋转=旋转+180
}否则{
//旋转=腐烂;
}
如果(rot<0&&rot>-90){
rot=270+90+rot;
}
轨迹(“理想旋转:+rot+”当前旋转:+rotation);
当前旋转=旋转;
如果(当前旋转<0){
电流旋转+=360;
}
如果(旋转-当前旋转>0){
if(数学绝对值(旋转电流旋转)<5){
旋转=腐烂;
}否则{
旋转+=旋转速度;
}
}否则如果(旋转-当前旋转<0){
if(数学绝对值(旋转电流旋转)<5){
旋转=腐烂;
}否则{
旋转-=旋转速度;
}
}否则{
旋转=腐烂;
}
//旋转=腐烂;
}
以下是我是如何做到的:

public function aim(stageX:Number, stageY:Number):void
{
    var angle:Number = (Math.atan2(stageY - y, stageX - x) - Math.PI * 0.5) * 180 / Math.PI;
    if (angle < 180) angle += 360;
    if (angle > 180) angle -= 360;
    targetAngle = angle;
}
公共功能目标(stageX:Number,stageY:Number):无效
{
变量角度:数字=(Math.atan2(stageY-y,stageX-x)-Math.PI*0.5)*180/Math.PI;
如果(角度<180)角度+=360;
如果(角度>180)角度-=360;
目标角=角度;
}
x、 y是加农炮的坐标,
stageX
stageY-目标