如何检查玩家是否与任何墙壁发生碰撞 Java

How to check if a player has collided with any wall Java

我正在制作一个迷宫游戏,我正在尝试实现一个墙功能,如果玩家与墙发生碰撞,该功能将限制玩家的移动。我创建了一堵墙 class 以便我可以手动实现多堵墙。问题是我的 intersectsWith 方法检测一个圆和一个矩形是否发生碰撞(玩家是一个圆)接受一个 Player 类型的玩家和一个 Wall 类型的墙。我将如何做到这一点,以便我的方法可以检测到游戏中所有墙壁的碰撞,而不仅仅是一个,这样如果我的玩家遇到任何墙壁,它就会检测到它?我觉得我需要使用一个 ArrayList of walls 之类的东西。

实际上我只是制作了一个游戏引擎,所以我处理了很多碰撞问题。


  • 首先,你是对的,将你所有的墙添加到一个 ArrayList 并循环遍历它们并检查玩家的矩形是否与另一个矩形碰撞。像这样(伪代码):
for (Wall w : wallsArrayList) {
   if (myRectangle.intersects(w)) {
      return true;
   }
}
  • 如果性能有问题,您可以试试这个,但是我没有 运行 使用上述解决方案解决我的游戏中的任何问题:
  • 创建一个跟随玩家的矩形对象,您可以根据需要将其设置为视口的大小,或者只使其比播放器大一点。获取跟随玩家的较大矩形 inside 中的所有矩形,然后遍历这些矩形并检查碰撞。就性能而言,我不完全确定它是否好太多了,但在我看来,它似乎会更好。

    这是我在 Whosebug 上的第一个答案...所以让我知道我是否做错了什么:)