C# 碰撞和矩形/直线相交

C# 碰撞和矩形/直线相交,c#,vector,xna,collision-detection,rectangles,C#,Vector,Xna,Collision Detection,Rectangles,我正在做一个游戏的碰撞检测,水平是随机生成的块,每个块都有自己的边界框。我的碰撞检测是正常的,除了有时,玩家船可以碰撞2个或更多的块在同一时间,我需要找出它击中第一个 我已经计算出,如果我找到船舶边界框的角点,它在其运动方向上,然后从该角点(图上的红线)在船舶运动向量的相反方向上画一条线,该线上最远的交点将在第一次击中该框点时。 我只是不知道如何编程这种逻辑 我要做的是什么 与碰撞的边界框(矩形)列表 船舶运动(矢量2) 船舶边界框(三角形) 我的方法是:在船上添加另一组更小、更精确的边界框

我正在做一个游戏的碰撞检测,水平是随机生成的块,每个块都有自己的边界框。我的碰撞检测是正常的,除了有时,玩家船可以碰撞2个或更多的块在同一时间,我需要找出它击中第一个

我已经计算出,如果我找到船舶边界框的角点,它在其运动方向上,然后从该角点(图上的红线)在船舶运动向量的相反方向上画一条线,该线上最远的交点将在第一次击中该框点时。 我只是不知道如何编程这种逻辑

我要做的是什么

  • 与碰撞的边界框(矩形)列表
  • 船舶运动(矢量2)
  • 船舶边界框(三角形)

我的方法是:在船上添加另一组更小、更精确的边界框。如果发生碰撞,则应开始检查较小边界框的比例。
据我所知,许多游戏这样做是为了避免不必要的碰撞检查,但有一种方法可以在碰撞发生时更准确地确定碰撞。

是的,这是个好主意!但如果我理解正确的话,我想我仍然会在小范围内遇到这个问题。如果在同一平面上有两个块边界框,那么总是有可能同时与两个块边界框碰撞。你可以拥有越来越多的比例,并且必须不断缩小比例,直到只剩下一个碰撞。啊,好吧,这听起来相当先进,从我对XNA碰撞检测的所有研究中,这是最有用和最可靠的方法。它的实现非常简单,就像你做的“同样的事情”一样,但只是用另一组盒子…我希望很清楚,我现在谈论的是缩放船的边界框,而不是块的边界框。