路径上的矩形碰撞检测

时间:2011-06-29 22:35:42

标签: objective-c c collision-detection

我有两个矩形,一个是移动的,另一个是静止的。我有两个矩形的大小,以及移动矩形的当前坐标和它想去的地方的坐标。它会直线移动。有了这些信息,找到两个盒子是否会在路径上发生碰撞的最有效方法是什么。这样做效率更高或每帧移动框少量并每次进行碰撞检测是否更有效?

2 个答案:

答案 0 :(得分:2)

由于其中一个矩形是静止的,一种方法是创建移动矩形所经过的路径的多边形,这可以仅使用其初始和最终位置来完成:

(initial position)
+--------+
|\       |\
| \      | \
+--\-----+  \
 \  \     \  \
  \  +-----\--+
   \ |      \ |
    \|       \|
     +--------+
      (final position)

路径多边形:

+--------+
|         \
|          \
+           \
 \           \
  \           +
   \          |
    \         |
     +--------+

然后在静止矩形和路径多边形之间使用正常的多边形碰撞检测算法。

答案 1 :(得分:0)

如果它以恒定速度移动,最有效的方法是计算它们何时会发生碰撞(时间=速度/距离)以及它们是否会发生碰撞(导出一个线性运动方程,看看它是否会通过静止长方形)。如果它以可变速度移动,则每次速度变化时执行这些计算。这些都比每帧的比较效率更高。