家伙!处理游戏对象(与其他尺寸)的碰撞时遇到问题。 我的算法是:
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);
}
}
是的,这很好用。但它工作得很慢。我有一个想法(只检查附近的对象对象),但这意味着越来越多的迭代。也许存在更好的方式?
答案 0 :(得分:3)
将您的游戏世界划分为单元格,其中包含指向驻留在其中的对象的指针列表。确保在对象在它们之间移动并且单元格的大小大于最大对象时更新单元格。仅检查与同一单元格和相邻单元格中的对象的碰撞。您可以尝试使用单元格大小,并在以后使用更多优化进行优化。
答案 1 :(得分:1)
你可以将游戏世界划分为一个大区域,并在一个区域中检查游戏结果的碰撞。这是一种基本方法。