foreach (var rect in listRect)
{
foreach (var rect2 in listRect)
{
if (Rectangle.Intersect(rect.r,rect2.r) != Rectangle.Empty && rect != rect2)
{
if (rect.r.Left < rect2.r.Right)
rect.speedX = ran.Next(-6,-4);
rect2.speedX = ran.Next(4, 6);
if (rect.r.Right > rect2.r.Left)
rect.speedX = ran.Next(4, 6);
rect2.speedX = ran.Next(-6, -4);
if (rect.r.Top < rect2.r.Bottom)
rect.speedY = ran.Next(4, 6);
rect2.speedY = ran.Next(-6, -4);
if (rect.r.Bottom > rect2.r.Top)
rect.speedY = ran.Next(-6, -4);
rect2.speedY = ran.Next(4, 6);
这是我当前用于检查两个矩形是否碰撞的函数的代码。然后,如果检测到碰撞,则应该反转矩形的速度,使它们沿相反的方向移动。
您可能想象的我的代码不起作用,我真的不知道我应该如何解决这个问题。
矩形保存在一个名为 listRect 的列表中,矩形的类如下所示:
class myRectangle
{
public Rectangle r = new Rectangle();
public int speedX = 5;
public int speedY = 5;
}
如何进行简单的碰撞检测,以便我知道它们在哪里发生碰撞以及如何在 if-else 语句中使用它?