C#/ XNA线矩形碰撞/响应

时间:2013-01-10 22:53:12

标签: c# xna geometry collision-detection xna-4.0

首先,我有一个简单的课程Line;

public class Line
{
    public Vector2 P1 = Vector2.Zero;
    public Vector2 P2 = Vector2.Zero;

    public Line(Vector2 p1, Vector2 p2)
    {
        P1 = p1;
        P2 = p2;
    }
}

游戏中所有行的列表,以及我的精灵边界矩形。我试图找出这个矩形底部中间是否位于它正上方的线上的点之下,并将其更新到它所在线上的点。这张照片可能会帮助你理解我的意思; enter image description here

矩形向下移动,传递它的交叉点,然后相应地更新。

关于如何解决这个问题的任何想法?我可以很容易地找到它当前上面的那条线,但是我不知道如何在它上面的线上获得该点,并防止它超过该点。

代码示例或引用会很棒。

1 个答案:

答案 0 :(得分:0)

如果你知道线的端点的位置,那么以y = mx + c的形式得到该线的方程式是非常简单的。然后你需要找到那个矩形底部的中点 - 看到XNA矩形给你它的高度,宽度和中心点位置,这也是微不足道的。从那里,您可以获取矩形中心点的x坐标,使用y = mx + c等式计算出该线的y坐标。然后你只需要检查矩形的底部中心是否低于该点,如果是,则使用矩形的高度值计算出你需要放置矩形以使其看起来如何坐在上面的y坐标上方多远这条线。应该够简单。