Windows Phone 8: C# XAML 如何检测形状碰撞

Windows Phone 8: C# XAML how to detect shape collisions

我正在尝试检测何时有一个形状 (XAML),在我的例子中是一个矩形,碰到另一个矩形。

我现在尝试搜索一个小时,但仍然没有找到可以帮助我解决问题的东西。我也没有使用 XNA,所以请不要为我提供 XNA 的解决方案。

只是碰撞的一个例子:

提前致谢!

如果您知道每个矩形的 LocationSize。碰撞代码很简单

来自MDN: 2D collision detection

的一个非常简单的例子
if (rect1.x < rect2.x + rect2.width &&
   rect1.x + rect1.width > rect2.x &&
   rect1.y < rect2.y + rect2.height &&
   rect1.height + rect1.y > rect2.y)
{
    // collision detected!
}

如果您有对这些矩形的引用,您可以轻松地使用 IntersectsWith 方法来查找碰撞,并使用 Intersect 方法来获取碰撞的大小:

var rect1 = rectangle1.RenderedGeometry.Bounds; // get the rect struct
var rect2 = rectangle2.RenderedGeometry.Bounds; // get the rect struct

if (rect1.IntersectsWith(rect2))
{
    // get the area of the collision
    var collisionRect = Rectangle.Intersect(rect1, rect2);
}

这样您就不必手动计算位置和可能的碰撞。