我想用javafx开发一个游戏,在那里我应该能够投篮。路径的坐标应为抛物线运动形式,因此我想为此使用数学公式:y(x)=(-x²/(2 *v0²* cos(phi)²)+ tan(phi) * x + y0(看起来像一个抛物线)。如果球到达底部,它应该以较低的y坐标再次跳跃。我想制作一个for循环,将x坐标设置为for循环的连续变量,上面公式作为y坐标的结果。问题是,我不知道哪个类可以提供我的方法,我想将整个坐标放入一个数组,但是不知道它是否可以工作。还不知道我是否真的需要数学函数。 那么我需要哪些课程?有没有更简单的方法?
答案 0 :(得分:1)
我想制作一个for循环,将x坐标设置为for循环的连续变量,并将上述公式的结果设置为y坐标。
这听起来是个好方法。 (假设您只是试图绘制轨迹。如果要按照轨迹对射弹进行动画处理,则您的公式需要是t -> (x, y)
的函数...否则您需要其他方法。)>
问题是,我不知道哪个类可以提供我的方法。
java.lang.Math
类提供了超越函数(cos
,tan
等)。它还具有pow
函数...但是最好只使用乘法将乘数提高到2的幂。
我猜测phi
的值只是一个常数。您应该能够look up its value并将其嵌入到您的代码中。 ( UPDATE -我被告知phi
可能是一个变量。无论哪种方式,这都不是问题。)
但是您将找不到一个可以为您做很多事情的现有类/方法。您必须写一个。
有没有更简单的方法?
不。 (AFAIK)
答案 1 :(得分:1)
您的方法存在的问题是您要使用的公式不是很有帮助。它只为您提供x和y坐标之间的静态关系,但完全忽略了时间。如果您想使游戏更加逼真,则应使用一些现有的物理引擎,例如http://www.dyn4j.org/。其中有几个,我不知道哪个是与JavaFX一起玩的最好的游戏。对于典型的游戏循环,您应该看看JavaFX中的AnimationTimer类。