我无法轻松获得此旋转功能。我有一个应该朝另一个移动物体旋转的炮塔。它应该找到最短的旋转方向。
基本上我所做的是使用-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;
}
答案 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是大炮的坐标,stageX
,stageY - target
。