0

我只是想知道,在 java 中响应 2d 瓦片地图碰撞的最佳方法是什么。

我设置了代码,以便当玩家矩形与作为二维矩形数组 (Rectangle[][] collRects) 的一部分的 Tiles Rectangle 相交时,就会发生碰撞。

我知道如何设置它,但是当我运行程序并且播放器与瓷砖碰撞时,播放器沿着内部瓷砖的边缘移动并最终穿过碰撞矩形。

我现在应对碰撞的方式是:

  1. 我用 if 语句检查玩家与瓷砖的哪一侧发生碰撞。
  2. 玩家有一个速度变量,所以我在碰撞前玩家移动的任何轴上都设置为零值。

我想我想说的是,应对碰撞的最佳方式是什么?

帮助将不胜感激,谢谢。

4

1 回答 1

0

如果我理解正确,您似乎有兴趣检测玩家(精灵)和瓷砖(而不是其他自由移动的精灵)之间的碰撞。

为此,一些简单的模运算应该足以检测(从玩家的左上角 (x,y) 坐标)哪个图块在地图中发生碰撞。

假设地图由 NxM 的瓦片矩阵组成,水平编号为 0...N-1,垂直编号为 0..M-1,瓦片大小为 32x32 像素,则碰撞瓦片坐标 (i,j)是:

我 = 地板(player.x / 32);

j = 地板(player.y / 32);

于 2011-12-24T04:28:18.810 回答