[英]How to handle the 4 sides of rect object in case of intersectsWith another one?
我必须2个rect对象。 其中一个不能动,另一个可以动。 当它与每侧的第一个相交时,我想处理。 就像是:
if (rect1.IntersectsWith(rect2))
{
if (rect1.Top == rect2.Bottom)
{
...
}
else if (rect1.Bottom == rect2.Top)
{
...
}
else if (rect1.Left == rect2.Right)
{
...
}
else if (rect1.Right == rect2.Left)
{
...
}
}
这给我一个不准确的结果。 任何想法?
看来您已经有了确定两个矩形是否碰撞的方法,这很好,因为这使您的工作更加轻松。 您现在要做的就是确定碰撞发生在哪一侧,然后采取相应的措施。
如果是这样,那么您已经在正确的轨道上。 但是,您检查的逻辑有些错误。 您正在检查一个边缘是否正好在另一边缘的顶部 。 在大多数应用中,这实际上很少见。 您应该检查的是是否存在任何重叠,您需要使用<=
和>=
比较器。
if (rect1.IntersectsWith(rect2))
{
// assumes that positive Y signifies downward direction
if (rect1.Top <= rect2.Bottom)
{
...
}
else if (rect1.Bottom >= rect2.Top)
{
...
}
else if (rect1.Left <= rect2.Right)
{
...
}
else if (rect1.Right >= rect2.Left)
{
...
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.