Ich hab eine Frage, bzgl. meines Pong-Spiels. Es gibt da ein Problem mit der Kollision. Wenn der Ball nicht frontal auf den Schläger trifft, sondern an der unteren oder oberen Seite, fliegt er durch den Schläger durch (Siehe Anhang).
Die Kollisionsabfrage funktioniert folgendermaßen: Ich habe eine Funktion, der die X- u. Y- Koordinaten sowie Höhe und Breite von Ball und Schlägern übergeben wird. Diese überprüft dann einfach per Rechtsecks-Kollisionsabfrage, ob sich die Rechtecke schneiden.
Delphi-Quellcode:
if IsCollision(Self.X, Self.Y, Self.Height, Self.Width,
Player1.X, Player1.Y, Player1.Height, Player1.Width) or
IsCollision(Self.X, Self.Y, Self.Height, Self.Width,
Player2.X, Player2.Y, Player2.Height, Player2.Width) then DX := DX * (-1);
Wo liegt der Fehler? Strange.
Edit: Hab den Fehler gefunden. Ich muss vorher die Steuerung "abschalten", so dass der Schläger nicht weiter "in den Ball" bewegt werden kann. Danke trotzdem.