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 ステートメントでそれをどのように使用できますか?