Я пытаюсь реализовать функцию, которая определяет, пересекаются ли два прямоугольника, то есть, если они «касаются», не используя функцию Rectangle.IntersectsWith
.
Причина этого в том, что я хочу определить, на какой стороне происходит столкновение относительно объекта «герой», но это не работает.
public bool[] Collisions(Rectangle hero, Rectangle rect)
{
bool hitSomethingAbove = false;
bool hitSomethingBelow = false;
bool hitSomethingOnTheRight = false;
bool hitSomethingOnTheLeft = false;
if (hero.Left < rect.Right) // collision on left side
{
hitSomethingOnTheLeft = true;
}
if (hero.Right > rect.Left) // collision on right side
{
hitSomethingOnTheRight = true;
}
if (hero.Top < rect.Bottom) // collision on top
{
hitSomethingAbove = true;
}
if (hero.Bottom > rect.Top) // collision on bottom
{
hitSomethingBelow = true;
}
return new bool[] { hitSomethingAbove, hitSomethingBelow,
hitSomethingOnTheRight, hitSomethingOnTheLeft };
}