Ich entwickle gerade ein ähnliches Spiel wie "Breakout". Das Problem ist, dass, wenn der Ball über die Kanten eines Steins geht, er weder den Stein entfernt noch die Richtung des Balls ändert.Kollisionsfunktion funktioniert nicht richtig
if (ball.Left > l.Left && (ball.Left + ball.Width) < l.Left-margin + l.Width)
{
if (ball.Top > l.Height && ball.Top < l.Top)
{
this.Controls.Remove(l);
ballDX *= -1;
ballDY *= -1;
}
else if (ball.Top < l.Height && ball.Top > l.Bottom)
{
this.Controls.Remove(l);
ballDX *= +1;
ballDY *= +1;
}
}
Ich würde den ersten Teil dieser beiden inneren ifs betrachten - Sie vergleichen die Position des Balls mit der Größe des Steuerelements (Höhe) - wahrscheinlich nicht das, was Sie von Anfang an wollten. – decPL