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