0

モバイル ゲーム用の CocosSharp ライブラリの調査を開始したばかりで、画面上のスプライト間の衝突を検出する簡単な方法があるかどうかわかりません。

衝突に関するいくつかのチュートリアルを見てきましたが、複数のスプライトの衝突について何かを見つけることができません。

画面上で跳ねる単純な 3 ~ 4 個のボールを作成しています。チュートリアルでは、衝突の検出にBoundingBox.IntersectRectメソッドを使用しますが、これは画面上の 2 つの要素に対しては問題ありません。

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

しかし、画面上に複数の要素 (私の場合は 3 ~ 4 個のボール) がある場合、これはやり過ぎだと思います。それらの間の衝突を効果的にチェックするにはどうすればよいですか?

4

1 に答える 1

1

複数の長方形が交差しているかどうかのチェックから

すべての境界ボックスを長方形として取得する場合、ここで使用できるものがあります

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)));
}
于 2016-11-13T17:59:15.423 に答える