【问题标题】:Get collision details from Rectangle.Intersects()从 Rectangle.Intersects() 获取碰撞细节
【发布时间】:2012-12-19 11:37:00
【问题描述】:

我有一个 Breakout 游戏,在该游戏中,我检测到球和桨之间的碰撞,如下所示:

// Ball class
rectangle.Intersects(paddle.Rectangle);

我有什么方法可以使用当前的XNA API 获取碰撞的确切坐标或有关它的任何详细信息?

我想过做一些基本的计算,比如比较每个物体在碰撞瞬间的精确坐标。它看起来像这样:

// Ball class
if((rectangle.X - paddle.Rectangle.X) < (paddle.Rectangle.Width / 2))
    // Collision happened on the left side
else
    // Collision happened on the right side

但我不确定这是正确的做法。

你们对我可能必须使用的引擎有什么建议吗?甚至是使用这种方法的良好编码实践?

【问题讨论】:

    标签: c# xna collision-detection game-physics


    【解决方案1】:

    我在http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.rectangle.intersect.aspx找到了

    有两种相似的静态方法(它们在返回值的方式上有所不同),结果给你的交集也是一个矩形。这应该足以满足您的需求。

    【讨论】:

    • 好的,使用返回的 Rectangle,如何检查被球碰撞的桨的位置?
    • 我不明白你想要得到什么。无论碰撞如何,桨的位置都应该是已知的。球接触球拍的撞击区域的位置是这些 interct 方法产生的矩形。如果您只想知道一个点并且生成的矩形大于该点,您可以通过取该矩形的中心来近似。
    • 我试图了解球是击中球拍的左侧还是右侧。最后,我通过使用相交矩形的简单计算完成了这一点。再次感谢您!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-21
    • 2012-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多