如何使用具有特定坐标的javafx绘制路径?

时间:2018-11-24 22:41:35

标签: java javafx game-physics

我想用javafx开发一个游戏,在那里我应该能够投篮。路径的坐标应为抛物线运动形式,因此我想为此使用数学公式:y(x)=(-x²/(2 *v0²* cos(phi)²)+ tan(phi) * x + y0(看起来像一个抛物线)。如果球到达底部,它应该以较低的y坐标再次跳跃。我想制作一个for循环,将x坐标设置为for循环的连续变量,上面公式作为y坐标的结果。问题是,我不知道哪个类可以提供我的方法,我想将整个坐标放入一个数组,但是不知道它是否可以工作。还不知道我是否真的需要数学函数。 那么我需要哪些课程?有没有更简单的方法?

2 个答案:

答案 0 :(得分:1)

  

我想制作一个for循环,将x坐标设置为for循环的连续变量,并将上述公式的结果设置为y坐标。

这听起来是个好方法。 (假设您只是试图绘制轨迹。如果要按照轨迹对射弹进行动画处理,则您的公式需要是t -> (x, y)的函数...否则您需要其他方法。)

  

问题是,我不知道哪个类可以提供我的方法。

java.lang.Math类提供了超越函数(costan等)。它还具有pow函数...但是最好只使用乘法将乘数提高到2的幂。

我猜测phi的值只是一个常数。您应该能够look up its value并将其嵌入到您的代码中。 ( UPDATE -我被告知phi可能是一个变量。无论哪种方式,这都不是问题。)

但是您将找不到一个可以为您做很多事情的现有类/方法。您必须写一个

  

有没有更简单的方法?

不。 (AFAIK)

答案 1 :(得分:1)

您的方法存在的问题是您要使用的公式不是很有帮助。它只为您提供x和y坐标之间的静态关系,但完全忽略了时间。如果您想使游戏更加逼真,则应使用一些现有的物理引擎,例如http://www.dyn4j.org/。其中有几个,我不知道哪个是与JavaFX一起玩的最好的游戏。对于典型的游戏循环,您应该看看JavaFX中的AnimationTimer类。