2013-08-16 81 views
2

夥計!我在處理遊戲對象的碰撞(與其他尺寸)時遇到了問題。 我的算法是:更好的方法來檢查遊戲對象碰撞

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); 
    } 
} 

是的,這是正常工作。但它工作非常緩慢。我有一個想法(只檢查附近的對象),但這意味着越來越多的迭代。也許更好的方式是存在的?

+2

可能值得發佈此http://gamedev.stackexchange.com/ –

回答

1

您可以將遊戲世界劃分爲一些大區域,並且只檢查一個區域中游戲角色的並置。這是一個基本的方法。

3

將您的遊戲世界劃分爲單元格,其中包含指向駐留在其中的對象的指針列表。確保在對象在它們之間移動時更新單元格,並且單元格的大小大於最大對象的大小。只檢查與同一單元格和相鄰單元格中的對象的碰撞。您可以試驗單元大小,稍後再進行更多優化。

+3

劃分算法(用於谷歌搜索):bsp,八叉樹,統一網格。 –