响应java中的tile map碰撞

时间:2011-12-22 23:23:15

标签: java map 2d collision tile

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

我有代码设置,这样当玩家矩形与Tiles Rectangle相交时,Tiles Rectangle是一个2d矩形数组(Rectangle [] [] collRects)的一部分,就会发生碰撞。

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

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

  1. 我用if语句检查玩家与玩家碰撞的哪一侧。
  2. 玩家有一个速度变量,所以我在玩家在碰撞前移动的任何轴上都设置为零值。
  3. 我想我想说的是,什么是应对碰撞的最好方法?

    非常感谢帮助, 谢谢。

1 个答案:

答案 0 :(得分:0)

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

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

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

i = floor(player.x / 32);

j = floor(player.y / 32);