轮换问题

时间:2011-02-25 06:46:14

标签: actionscript-3

我无法轻松获得此旋转功能。我有一个应该朝另一个移动物体旋转的炮塔。它应该找到最短的旋转方向。

基本上我所做的是使用-1转换动作脚本轮换 - > -179至180 - > 359.但是当它跟踪的物体超过零度点时,我现在遇到问题。然后turrent绕另一个方向旋转。

这是代码。我的想法变得有些困惑。它正在传递对象之间的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;
    }

1 个答案:

答案 0 :(得分:0)

我是这样做的:

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;
}

x,y是大炮的坐标,stageXstageY - target