【发布时间】:2017-03-16 16:17:46
【问题描述】:
我正在用 JavaFX 制作 2D 游戏,当检测到碰撞时,我得到的结果相当不准确,因为玩家精灵被设置为矩形的填充,因此没有预期的边框。有没有办法可以让我自己的形状尽可能准确?
我的另一个想法是检查碰撞的像素是否透明,如果是则不结束游戏。有谁知道我可以获取碰撞像素的坐标以便从那里使用 PixelReader 进行检查的方法?
如果有人知道更好的方法,请告诉我!
谢谢, 伊森
【问题讨论】:
我正在用 JavaFX 制作 2D 游戏,当检测到碰撞时,我得到的结果相当不准确,因为玩家精灵被设置为矩形的填充,因此没有预期的边框。有没有办法可以让我自己的形状尽可能准确?
我的另一个想法是检查碰撞的像素是否透明,如果是则不结束游戏。有谁知道我可以获取碰撞像素的坐标以便从那里使用 PixelReader 进行检查的方法?
如果有人知道更好的方法,请告诉我!
谢谢, 伊森
【问题讨论】:
有不同的方法可以做到这一点。这是我成功使用的一种方法。我会制作命中框,它们本身就是矩形。然后在碰撞检测期间,我会遍历所有的命中框以查看它们是否与飞行弹丸的命中框发生碰撞。
这允许您使用较小的矩形填充复杂的形状。例如,一架飞机将有一个长的水平矩形和一个较小的在中间交叉的矩形。
目前我正在使用 libGDX。在 libGDX 中,我使用他们的 Polygon 对象,如此处所述。 https://stackoverflow.com/a/28540488/1490322 我在 JavaFX 中没有看到类似的功能,但是将 libGDX 所做的事情复制到 JavaFX 代码中并不难……他们的代码是开源的。
【讨论】: