Heim > Artikel > Backend-Entwicklung > Warum wackelt mein Tischtennisball, anstatt vom Schläger abzuprallen?
In einem klassischen Pong-Spiel steuern die Spieler Schläger, um einen Ball über den Bildschirm hin und her zu lenken. Einige Benutzer sind jedoch auf ein Problem gestoßen, bei dem der Ball manchmal nicht vom Paddel abprallt, sondern wackelt und über die Oberfläche rutscht.
Ursache:
Dieses Problem tritt auf wenn der Ball mit der Ober- oder Unterkante des Schlägers kollidiert. Es ist richtig, diese Kollision zu erkennen und die Richtung des Balls umzukehren. Manchmal dringt der Ball jedoch so tief in das Paddel ein, dass er bei seiner nächsten Bewegung im Kollisionsbereich bleibt. Folglich wird eine zweite Kollision erkannt, die die Richtung des Balls erneut umkehrt und einen Zick-Zack-Effekt entlang der Vorderseite des Paddels erzeugt.
Lösungen:
Anstatt die Geschwindigkeit des Balls mit -1 zu multiplizieren, was zu einer Richtungsumkehr führt, wird ihm eine positive Geschwindigkeit zugewiesen, wenn er das rechte Paddel trifft, und eine negative Geschwindigkeit, wenn Wenn es auf das linke Paddel trifft, wird ein gleichmäßigerer Sprung erzeugt.
if ball.colliderect(paddleLeft): move_x = abs(move_x) if ball.colliderect(paddleRight): move_x = -abs(move_x)
Alternativ können Sie die Position des Balls anschließend anpassen Eine Kollision kann dafür sorgen, dass es innerhalb der Grenzen bleibt. Wenn das rechte Paddel getroffen wird, bewegen Sie die rechte Kante des Balls zur linken Seite des Paddels und umgekehrt beim linken Paddel.
if ball.colliderect(paddleLeft): move_x *= -1 ball.left = paddleLeft.right if ball.colliderect(paddleRight): move_x *= -1 ball.right = paddleRight.left
Das obige ist der detaillierte Inhalt vonWarum wackelt mein Tischtennisball, anstatt vom Schläger abzuprallen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!