2016-11-13 118 views
0

我剛剛開始探索用於手機遊戲的CocosSharp庫,並且無法弄清楚是否有更簡單的方法來檢測屏幕上精靈之間的碰撞。檢查多個重疊的精靈

我看過一些關於碰撞的教程,但找不到關於多個精靈碰撞的東西。

我正在創建簡單的三到四個彈跳在屏幕上的球,如果他們碰撞,我想反彈他們。在輔導他們使用BoundingBox.IntersectRect方法來檢測碰撞,但這是好的在屏幕上兩個要素:

bool doesBallOverlap = ball1.BoundingBoxTransformedToParent.IntersectsRect(ball2.BoundingBoxTransformedToParent); 

,但我認爲這是矯枉過正,如果我在屏幕上的多個元素,在我案例3-4球。我怎樣纔能有效檢查它們之間的碰撞?

回答

1

Check if multiple rectangles intersect

如果你得到所有邊框這裏矩形是你可以用什麼

bool CheckIfAllIntersect(IEnumerable<Rect> rectangles) 
{ 
    return rectangles.Aggregate(rectangles.FirstOrDefault(), Rect.Intersect) != Rect.Empty; 
} 


bool CheckIfAnyInteresect(IEnumerable<Rect> rectangles) 
{ 
    return rectangles.Any(rect => rectangles.Where(r => !r.Equals(rect)).Any(r => r.IntersectsWith(rect))); 
} 
+0

謝謝,這個指示我在某些方向,但這只是告訴我,我的一些精靈的重疊但不是巫婆或多少,我需要知道,相應的「彈跳」相交的精靈。 我會對此表示讚賞,但我不能將其標記爲答案。 – freshbm

+0

找出你想要的是實現一個循環的唯一方法。讓我知道如果你需要幫助,但循環是非常簡單的 –

+0

謝謝,我很害怕:)我只是想知道是否有任何其他方式做到這一點 – freshbm