Windows Phone 8: C# XAML 如何检测形状碰撞
Windows Phone 8: C# XAML how to detect shape collisions
我正在尝试检测何时有一个形状 (XAML),在我的例子中是一个矩形,碰到另一个矩形。
我现在尝试搜索一个小时,但仍然没有找到可以帮助我解决问题的东西。我也没有使用 XNA,所以请不要为我提供 XNA 的解决方案。
只是碰撞的一个例子:
提前致谢!
如果您知道每个矩形的 Location
和 Size
。碰撞代码很简单
的一个非常简单的例子
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);
}
这样您就不必手动计算位置和可能的碰撞。
我正在尝试检测何时有一个形状 (XAML),在我的例子中是一个矩形,碰到另一个矩形。
我现在尝试搜索一个小时,但仍然没有找到可以帮助我解决问题的东西。我也没有使用 XNA,所以请不要为我提供 XNA 的解决方案。
只是碰撞的一个例子:
提前致谢!
如果您知道每个矩形的 Location
和 Size
。碰撞代码很简单
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);
}
这样您就不必手动计算位置和可能的碰撞。