Dans un jeu de Pong classique, les joueurs contrôlent les pagaies pour dévier une balle d'avant en arrière sur l'écran. Cependant, certains utilisateurs ont rencontré un problème où la balle ne parvient parfois pas à rebondir sur la raquette, mais vacille et glisse le long de sa surface.
Cause :
Ce problème se pose lorsque la balle entre en collision avec le bord supérieur ou inférieur de la raquette. Détecter cette collision et inverser la direction de la balle est correct. Cependant, il arrive parfois que la balle pénètre si profondément dans la raquette qu'elle reste dans la zone de collision lors de son prochain mouvement. Par conséquent, une deuxième collision est détectée, renversant à nouveau la direction de la balle, créant un effet de zigzag le long de l'avant de la raquette. Direction au lieu de multiplier la vitesse :
Au lieu de multiplier la la vitesse de la balle de -1, ce qui entraîne une inversion de sa direction, l'attribution d'une vitesse positive lorsqu'elle frappe la palette droite et une vitesse négative lorsqu'elle frappe la palette gauche produira un rebond plus cohérent.
if ball.colliderect(paddleLeft): move_x = abs(move_x) if ball.colliderect(paddleRight): move_x = -abs(move_x)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!