2016-11-13 114 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