1

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

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

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

游戏中所有线条的列表,以及我的精灵边界矩形。我试图找出这个矩形底部中间是否低于它正上方的线上的点,并将它更新到它所在的线上的点。这张图片可能会帮助您理解我的意思; 在此处输入图像描述

矩形向下移动,通过它的交点,然后相应地更新。

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

代码示例或参考会很棒。

4

1 回答 1

0

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

于 2013-01-30T08:59:55.783 回答