仅在对象移动或不断计算时计算交点

时间:2014-06-16 15:22:57

标签: performance game-engine intersection

我的问题有点抽象,为了让我更清楚,我试着解释它。

假设我有5个不可移动且具有静态位置的物体。 我的主要对象,不是静态的,并且与其中一个对象相交,然后我想知道并显示对此的响应。所以我的结论是迭代所有这些对象并计算它们的交叉点。但是,如果我没有其中的5个对象呢?可以说我有100个。然后更快地将布尔值绑定到主对象,当对象移动时为true,否则为true。并且只在布尔值为真时计算交叉点?

我想到的另一个选项是不断计算所有物体之间的距离,当距离较短时,则在测试交叉点之前。因此,如果一个物体移开我只计算距离,但如果它接近我必须计算距离的交点。

1 个答案:

答案 0 :(得分:2)

通常我将对象分层,以便以不同方式处理静态(非移动)和动态(移动)。

这真的取决于你想要诚实地做什么,但处理这个问题的最佳方法是构建所有可碰撞几何体的BSP,并使用它来处理碰撞而不是对所有对象进行线性搜索。

您将使用布尔方法在主要对象不移动的帧上节省处理时间,但老实说,它不是一个永久的解决方案。