0

我正在制作横向卷轴,而我正在为敌人制作炮塔。我正在尝试让炮塔瞄准玩家,但我似乎无法做到正确。下面是我想要实现的粗略草图:

在此处输入图像描述

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

我上传了我的场景的 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 有点陌生。如果有人可以帮助我,或者指出我正确的方向,那就太好了。

谢谢

4

2 回答 2

0

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

function enterFrameHandler(e : Event) : void{
   _turretBarrel.rotation = Math.atan2(enTarget.x - barrel.x, enTarget.y - barrel.y) * 180/Math.PI;
}
于 2012-03-16T08:13:28.547 回答
0

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

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

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

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

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

附带说明:这是大多数编程的内容;调试。假设只有确凿的事实,从调试器中获取您的数字(可能更快),或跟踪输出。如果您仍在使用可怕的 flash 专业 IDE。我真的建议使用适当的调试器,如 FlashDevelop(免费)或 Flash Builder(商业)

于 2012-03-16T20:55:46.667 回答