在弹丸路径中移动物体

时间:2012-11-29 08:50:41

标签: java android physics

我正在研究一个Android项目,我想在一个射弹路径中移动一个物体,但不知道该怎么做..

我得到了初始X和初始Y,即横向模式下手机的左下角。另外我拿取X和Y是用户触摸手机,所以我也可以通过tan-1(y / x)计算角度,但是如何计算曲线路径,即对象的X和Y.

任何帮助将不胜感激。

谢谢

2 个答案:

答案 0 :(得分:1)

你有投掷弹丸的初始点p1(X,Y)。你有一个用户触摸屏幕的点,比如说p2。因此,找到方向向量,如dir = p2 - p1并将其标准化。然后执行以下操作:

  1. 你有初始速度,v =速度* dir,其中速度是标量因子
  2. 然后,在每个游戏标记上附加到当前位置向量v = v + (0, -10); v *= dt,其中(0,-10)是重力因子,dt - 游戏帧之间的时间。

答案 1 :(得分:0)

通过使用抛射方程的参数形式,您可以消除必须按时间间隔递增。

您需要做的就是确定您想要旅行的屏幕的距离(从左到右)。我会称之为X方向。然后,对于X方向上的每个位置(可能是一个像素,可能是一些像素数),您可以计算Y(向下到上)方向的相应位置。

您需要为重力引起的向下加速设置一个值。无论你选择什么价值,我都会称之为g。你还需要设置一个值来确定射弹开始运动的速度。无论你选择什么价值,我都会称之为V。

参数方程式是:

Y = X * tan(θ) - (g * X ^ 2)/(2 * V ^ 2 *(余弦(θ))^ 2)

因此,一旦你有了用户触摸点,就可以计算出角度θ,确定V,g和X的最大值,然后只需从0到最大X迭代,你就得到一个点(X ,Y)每次迭代。