繁体   English   中英

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

[英]C# / XNA Line Rectangle Collision/Response

首先,我有一个简单的类Line

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

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

游戏中所有线条的列表,以及我的精灵边界矩形。 我正在尝试查找此矩形底部中间是否在其正上方的线的点下方,并将其更新为它所在的线的点。 这张照片可能有助于您理解我的意思; 在此处输入图片说明

矩形向下移动,通过其交点,然后进行相应更新。

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

代码示例或参考将很棒。

如果您知道直线端点的位置,那么以y = mx + c的形式获得直线的方程式就很简单了。 然后,您需要找到该矩形底部的中点-看到XNA矩形为您提供了其高度,宽度和中心点位置,这也是不重要的。 从此处开始,获取矩形中心点的x坐标,使用y = mx + c方程计算出该点处线的y坐标。 然后,您只需要检查矩形的底部中心是否在该点以下,如果是,请使用矩形的高度值计算出要放置的矩形的y坐标上方的距离,以使其看起来像在线。 应该足够简单。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM