Flash - SideScroller Turret Math

时间:2012-03-16 02:34:50

标签: actionscript-3 flash math rotation aim

我正在制作侧卷轴,对于敌人我正在制作炮塔。我试图让炮塔瞄准玩家,但我似乎无法把它弄好。下面是我想要实现的草图:

enter image description here

我想要枪管(深蓝色),瞄准/旋转指向玩家。

我上传了一段关于我的场景的YouTube视频:

http://www.youtube.com/watch?v=eeP47VoX9uA&feature=youtu.be

这是我到目前为止(循环):

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

这样做只是在我跳跃时旋转枪管,并且枪管甚至没有瞄准玩家,当我走在炮塔的另一侧时枪管也不会改变旋转。

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

我对Flash和ActionScript略感新手。如果有人能帮助我,或指出我正确的方向,那就太棒了。

由于

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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

3)确保在适当的地方使用相应的度数/弧度。

4)强制关注头像,运行游戏并查看边界是否正常。然后用炮塔做同样的事情。

通常用于调试的另一个好处是设置某种调试图形。即绘制一条你认为是方向向量的线来验证你的数字和计算。

旁注: 这就是大多数编程的内容;调试。除了硬性事实之外什么也不做,从调试器中获取数字(可能更快)或跟踪输出。如果你还在使用可怕的flash专业IDE。我真的建议使用适当的调试器,如FlashDevelop(免费)或Flash Builder(商业)