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);
これは、2 つの長方形が衝突したかどうかを確認する関数の現在のコードです。次に、衝突が検出された場合、長方形の速度を逆にして、反対方向に移動することになっています。
おそらく想像できるように、私のコードは機能せず、これをどのように解決する必要があるのか 本当にわかりません。
長方形は listRect というリストに保存され、長方形のクラスは次のようになります。
class myRectangle
{
    public Rectangle r = new Rectangle();
    public int speedX = 5;
    public int speedY = 5;
}
簡単な衝突検出を行うにはどうすれば衝突した場所がわかるので、if-else ステートメントでそれをどのように使用できますか?