gpt4 book ai didi

java - 如何有效地实现 2D 游戏的碰撞?

转载 作者:太空宇宙 更新时间:2023-11-04 06:32:53 24 4
gpt4 key购买 nike

我刚刚使用 Java、LWJGL 和 Slick Util 开始了一个新的 2D 游戏,但我似乎找不到进行碰撞检测的好方法。如果我愿意,使用矩形相交方法检测两个实体之间的碰撞会很容易,但它只能检查与您指定的某个区域的碰撞。我认为我可以列出每个实体及其创建时的坐标,然后通过列表运行 intersect 方法,但每次游戏更新时它都会检查与整个 map 上每个实体的碰撞,我认为这效率太低了。

有人知道创建碰撞检测的更有效方法吗?如果有某种方法我可以检查角色移动的每个点是否都有一个实体,这可能是最好的。

如果我没有足够的信息或者我让这听起来太困惑,请告诉我,我可以尝试澄清事情。另外一个附带问题是,使用 slick util 或 slick 2D 相互之间有什么好处。感谢您的帮助!

最佳答案

解决这个问题的常用方法是场景图,即游戏世界对象的层次系统。

您可能想查看thisthis .

缩短:您可以在节点下对对象进行逻辑分组,并为节点分配一个包含其所有子节点和叶子(对象)的边界矩形。所有内容都再次分组在一个主节点下以访问树。现在,您可以测试对象与节点的碰撞,通常从主节点开始。如果你命中了,你会检查它的子节点并离开。

这将需要一些时间来实现,但如果树结构/分组做得正确,可以减少 CPU 使用率。它还具有的好处是您可以实现局部变换,这使得相对于彼此移动对象变得更容易。

关于java - 如何有效地实现 2D 游戏的碰撞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25857969/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com