网格图中的碰撞检测?

时间:2015-01-01 03:20:02

标签: collision-detection

有一个网格图(平铺图)。在所有瓷砖中,有些是免费的(空的),有些是障碍物。 现在,如果我随机选择空白图块(图块 A 并平铺 B )并在它们之间绘制一个线段。 什么是最快的算法来判断此线段是否与任何障碍无冲突? (在下图中:红色瓷砖是障碍物,Line_2是无碰撞的,Line_1不是)

目前,我正在做的是从 A B 进行体素遍历并检查遍历的图块是否包含障碍物?

Red tiles are obstacles, Line_2 is collision free, Line_1 is not

但是有更好的解决方案吗?

1 个答案:

答案 0 :(得分:1)

我相信,算法的速度取决于场的大小和障碍物的数量。如果场地充满障碍,你的方式非常好。

另一种方法是找到光线与瓷砖每一面的交点。

enter image description here

我认为如果你有一些瓷砖和很多可用空间,这种方式非常好。

UPD:此方法应通过"背面"的排除计算进行优化。所有组的瓷砖。它将减少计算量并加快例行程序。

最后,我相信,您可以在代码中使用这两种算法。您可以通过近似"密度"来选择方法。的地图。