C++ 检查游戏对象碰撞的更好方法

C++ 检查游戏对象碰撞的更好方法,c++,directx,2d,collision-detection,C++,Directx,2d,Collision Detection,伙计们!我在处理游戏对象(与其他大小)的碰撞时遇到问题。 我的算法是: for (Array<GameObject*>::iterator it = objects.begin(); it != objects.end(); it++) { RECT objRect = (*it)->GetBoundingBox(); for (Array<GameObject*>::iterator it2 = object.begin(); it2 != objec

伙计们!我在处理游戏对象(与其他大小)的碰撞时遇到问题。 我的算法是:

for (Array<GameObject*>::iterator it = objects.begin(); it != objects.end(); it++)
{
   RECT objRect = (*it)->GetBoundingBox();
   for (Array<GameObject*>::iterator it2 = object.begin(); it2 != object.end(); it2++)
   {
      RECT objRect2 = (*it2)->GetBoundingBox();
      IntersectRectangles(objRect, objRect2);
   }
}
for(数组::迭代器it=objects.begin();it!=objects.end();it++)
{
RECT objRect=(*it)->GetBoundingBox();
对于(数组::迭代器it2=object.begin();it2!=object.end();it2++)
{
RECT objRect2=(*it2)->GetBoundingBox();
相交矩形(objRect,objRect2);
}
}

是的,很好用。但是它工作得很慢。我有一个想法(只检查附近的对象到对象),但这意味着越来越多的迭代。也许更好的方法是存在?

将游戏世界划分为单元格,单元格中包含指向驻留在其中的对象的指针列表。当对象在单元格之间移动且单元格的大小大于最大对象时,请确保更新单元格。仅检查与同一单元格和相邻单元格中的对象的碰撞。您可以尝试单元格大小,并在以后进行更多优化。

将游戏世界划分为单元格,其中包含指向驻留在单元格中的对象的指针列表。当对象在单元格之间移动且单元格的大小大于最大对象时,请确保更新单元格。仅检查与同一单元格和相邻单元格中的对象的碰撞。您可以尝试单元格大小,并在以后进行更多优化。

您可以将游戏世界划分为一些大区域,并仅在一个区域中检查游戏OJCETS的配置。这是一个基本的方法。

您可以将游戏世界划分为一些大区域,并仅在一个区域中检查游戏OJCETS的配置。这是一个基本方法。

可能值得在除法算法(用于谷歌搜索)上发布此方法:bsp,八叉树,统一网格。除法算法(用于谷歌搜索):bsp,八叉树,统一网格。