Flash 闪光中的弹丸运动';s坐标系

Flash 闪光中的弹丸运动';s坐标系,flash,Flash,我在看一个公式,这个公式有助于计算弹丸运动的轨迹。我看到的答案如下: 这个公式实际上似乎是可行的——只是它是基于屏幕坐标系的原点在左下角的想法来计算y位置的。在Flash中,坐标系位于左上角,y位置越高,向下越远!这意味着,抛射物不是向上拱起,然后再向下,而是向下,然后向上 我需要找到一些方法来转换我的y值,这样一个投射物看起来就像是在一个合适的抛物线上上下运动。有人知道怎么做吗 请有人建议…查看您的链接(对不起,应该先查看此链接,看看您使用的是什么方法来计算您的运动-我假设您使用的是其他方法

我在看一个公式,这个公式有助于计算弹丸运动的轨迹。我看到的答案如下:

这个公式实际上似乎是可行的——只是它是基于屏幕坐标系的原点在左下角的想法来计算y位置的。在Flash中,坐标系位于左上角,y位置越高,向下越远!这意味着,抛射物不是向上拱起,然后再向下,而是向下,然后向上

我需要找到一些方法来转换我的y值,这样一个投射物看起来就像是在一个合适的抛物线上上下运动。有人知道怎么做吗

请有人建议…

查看您的链接(对不起,应该先查看此链接,看看您使用的是什么方法来计算您的运动-我假设您使用的是其他方法),如果您希望它“向上”而不是“向下”,您可以在事件处理程序中翻转第二行代码上的符号:

而不是:

cannonball.y = inity + Math.sin(angle) * initVelocity * Time - G * Time * Time * 0.5;
您可以选择(添加括号):


理由是,上述方法是通过计算弹丸应该在哪里的相对位置,然后将其添加到初始Y以获得最终位置。添加使其向下移动,因为y+=1将使对象沿舞台向下移动。因为相反的y-=1会使它向上移动,所以你可以用减法代替加法。

将你的最终y值乘以-1来翻转它,这样做不行。我想到了这一点,并尝试了一下。这不起作用的一个例子是:假设初始Y位置为65,Y速度为1(为简单起见)。在“常规”弧中,在第一个时钟滴答声中,新位置将为66。相反,你得到-66——完全破坏了你试图创建的抛物线弧。随着时间的推移,混乱仍在继续。不:仅仅通过将最终的Y乘以-1来“翻转”不会产生正确的运动。谢谢!这个解决方案是如此明显——难怪我没有看到它!:-)
cannonball.y = inity - (Math.sin(angle) * initVelocity * Time - G * Time * Time * 0.5);