Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 闪光侧滚刀架数学_Actionscript 3_Flash_Math_Rotation_Aim - Fatal编程技术网

Actionscript 3 闪光侧滚刀架数学

Actionscript 3 闪光侧滚刀架数学,actionscript-3,flash,math,rotation,aim,Actionscript 3,Flash,Math,Rotation,Aim,我在做一个侧卷轴,为敌人做一个炮塔。我试图让炮塔对准玩家,但我似乎做不好。下面是我想要实现的目标的大致草图: 我想要深蓝色的桶,瞄准/旋转到它指向玩家的位置 我上传了一段我的现场视频: 这就是我到目前为止所做的: function enterFrameHandler(e : Event) : void{ _turretBarrel.rotation = Math.atan2(enTarget.x, enTarget.y) * 180/Math.PI; } 这样做只是在我跳跃时旋转枪管,枪

我在做一个侧卷轴,为敌人做一个炮塔。我试图让炮塔对准玩家,但我似乎做不好。下面是我想要实现的目标的大致草图:

我想要深蓝色的桶,瞄准/旋转到它指向玩家的位置

我上传了一段我的现场视频:

这就是我到目前为止所做的:

function enterFrameHandler(e : Event) : void{
   _turretBarrel.rotation = Math.atan2(enTarget.x, enTarget.y) * 180/Math.PI;
}
这样做只是在我跳跃时旋转枪管,枪管甚至没有对准玩家,而且当我在炮塔的另一侧行走时,枪管也不会改变旋转

我的enTarget.x始终是舞台的中心,包括炮塔在内的场景围绕玩家左右移动x。。。只有enTarget.y移动跳高/跳高平台

我对Flash和ActionScript有点陌生。如果有人能帮我,或者给我指出正确的方向,那就太好了


谢谢

奥利弗,看起来你在计算玩家和X轴之间错误角度的tangens。您需要以下内容:

function enterFrameHandler(e : Event) : void{
   _turretBarrel.rotation = Math.atan2(enTarget.x - barrel.x, enTarget.y - barrel.y) * 180/Math.PI;
}

1确保你得到了正确的数字,并且化身和炮塔的位置在相同的坐标空间中。只要简单地跟踪一下就可以了。在这种情况下,您可能希望世界相对于两个剪辑的舞台位置。确保它们与屏幕左上角的0、0相比有意义

2记住,旋转是一个范围从-180到180的旋转,因此在计算角度时需要考虑这一点

3确保在适当的情况下使用相应的度/弧度

4.将注意力集中在阿凡达身上,运行游戏,查看边界是否正常。然后对炮塔做同样的事情

对于调试而言,另一个一般的好方法是设置某种调试图形。i、 e.画一条你认为是方向向量的线来验证你的数字和计算

旁注:
这是大多数编程的特点;调试。假设只有硬事实,从调试器获取数字可能更快,或者跟踪输出。如果你仍然在使用可怕的flash professional IDE。我真的建议使用一个合适的调试器,比如FlashDevelop free或FlashBuilder commercial,它应该是Math.atan2enTarget.y-barrel.y,enTarget.x-barrel.xs,直到不能正常工作为止。我忘了提到我的player.x总是在舞台中央,包括炮塔在内的场景是左/右移动的。虽然我的球员.y确实在移动,但我很难跟上。我对AS3真的是个新手,很难理解你的指导不用担心。首先计算从炮塔到化身的方向向量。方向向量=播放位置-炮塔位置。这两个位置都需要在同一个空间中,这里有一些解释。我猜问题的一个来源可能是一个或两个剪辑是其他剪辑的子剪辑。这将使i.e.avatar_movieclip.x不是一个可靠的值,因为它可能相对于avatar剪辑的父剪辑(如果它有一个)。确保使用绝对位置,除非两个剪辑都是同一父剪辑的直接子剪辑。