C# 控件位于不同画布/层时的Silverlight碰撞检测

C# 控件位于不同画布/层时的Silverlight碰撞检测,c#,silverlight,silverlight-4.0,collision-detection,C#,Silverlight,Silverlight 4.0,Collision Detection,对于我们的游戏,我们必须创建碰撞检测。 问题是,碰撞对象位于不同的画布/层中,这使得通过点位置进行碰撞检测成为可能 有人知道如何解决这个问题吗?如果没有更多的信息,很难给出一个好的答案,但是如果所有层的大小都相同,那么您可以自己进行碰撞检测。你只需要知道两个物体的位置和大小。然后测试一个矩形是否与另一个矩形相交 还有一个名为TranslatePoint的函数可能很有用。这将从一个UIElements坐标转换为另一个UIElements坐标。因此,如果你有一个球在屏幕上一个较小的区域内弹跳,并且有

对于我们的游戏,我们必须创建碰撞检测。 问题是,碰撞对象位于不同的画布/层中,这使得通过点位置进行碰撞检测成为可能


有人知道如何解决这个问题吗?

如果没有更多的信息,很难给出一个好的答案,但是如果所有层的大小都相同,那么您可以自己进行碰撞检测。你只需要知道两个物体的位置和大小。然后测试一个矩形是否与另一个矩形相交


还有一个名为TranslatePoint的函数可能很有用。这将从一个UIElements坐标转换为另一个UIElements坐标。因此,如果你有一个球在屏幕上一个较小的区域内弹跳,并且有它自己的局部坐标系,你可以通过这个函数得到球相对于整个屏幕的坐标。

如果没有更多的信息,很难给出一个好的答案,但是,如果所有层的大小都相同,则可以滚动自己的碰撞检测。你只需要知道两个物体的位置和大小。然后测试一个矩形是否与另一个矩形相交


还有一个名为TranslatePoint的函数可能很有用。这将从一个UIElements坐标转换为另一个UIElements坐标。因此,如果你有一个球在屏幕上一个较小的区域内弹跳,它有自己的局部坐标系,那么你可以通过这个函数获得球相对于整个屏幕的坐标。

我建议你尝试使用Farseer物理引擎,这样可以省去一些痛苦吗?

它非常好,已经在一些WP7游戏中使用。

还有一些混合行为和帮助工具,使其使用更加容易:

我可以建议您尝试使用Farseer物理引擎来减轻自己的痛苦吗?

它非常好,已经在一些WP7游戏中使用。

还有一些混合行为和帮助工具,使其使用更加容易:

我们也非常感谢关于这个主题的最佳实践。我们也非常感谢关于这个主题的最佳实践。所有的画布都有不同的尺寸和位置。最后我们重写了一些代码,使子弹与npc在同一块画布上。碰撞检测现在工作正常,速度更快。对于将来的参考:我相信silverlight中的Translatepoint称为uielement.TransformToVisual()。谢谢你的建议。所有的画布都有不同的尺寸和位置。最后我们重写了一些代码,使子弹与npc在同一块画布上。碰撞检测现在工作正常,速度更快。对于将来的参考:我相信silverlight中的Translatepoint称为uielement.TransformToVisual()。谢谢你的建议。