如何做(或代码),以便Bullet对象数组可以与Zombie对象数组相遇?

时间:2016-08-20 16:44:59

标签: java arraylist

我刚开始使用 Java 学习游戏开发。

我创建了

  1. Zombie类的ArrayList
  2. 类Bullet的ArrayList
  3. 两个ArrayList中的每个对象都有一个名为 rect 的变量,类型为Rectangle,它在屏幕上包围着自己的图形。

    当任何子弹遇到任何僵尸时,我的目标才能生效。

    我的问题我不知道怎么做"任何子弹遇到任何僵尸。"

    我的方法:我使用 rect 变量来测试两个对象是否已使用方法 rect.intersect(r)相互冲突。我测试了Bullet ArrayList中的每一颗子弹,看它是否与Zombie ArrayList中的任何僵尸相撞,这意味着我每帧完全运行两个ArrayList只是为了实现这个功能。必须有更好的方法.. ??

1 个答案:

答案 0 :(得分:1)

唯一的"更好的方式"将在单独的线程上运行您的碰撞检测,以便您可以在执行其他逻辑时检测碰撞。 这不是最容易实现的,除非你遇到碰撞检测的大幅减速,否则我建议你继续这样做。

你也可以尝试缩小碰撞检测的候选者......

例如,如果某些僵尸/子弹在屏幕外,你可能不在乎是否发生碰撞,所以你可以完全跳过所述实体。

是的,您必须首先检查实体是否在屏幕上,但是只能运行一次每个列表,这可能会使您无法通过一堆碰撞检测来运行无论如何都要关心。

TL; DR:如果你没有经历过任何大规模的性能下降,我会尝试继续使用它并首先建立你对碰撞检测的理解,然后担心优化。

我希望它有所帮助:)