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

标签 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 != object.end(); it2++)
   {
      RECT objRect2 = (*it2)->GetBoundingBox();
      IntersectRectangles(objRect, objRect2);
   }
}

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

最佳答案

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

关于c++ - 检查游戏对象碰撞的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18264675/

相关文章:

c++ - DirectX::XMMATRIX 错误 C2719: __declspec(align ('16' )) 不会对齐

python - 像素着色器中的 Mandelbrot

c++ - 学习DirectX需要具备哪些知识

c++ - 什么库或图形引擎适合全屏专业零售工具?

python - 获取 int 或 str 形式的用户输入

C 二维数组转化为链表

C++:BOOST-ASIO async_read_some 不返回数据包字节数?

c++ - Oculus 基本 Makefile

c++ - 组类类型

C++ 为什么我只得到最后一行?