Maison >développement back-end >Tutoriel Python >Pourquoi ma détection de collision Pygame renvoie-t-elle toujours vrai et pourquoi la position de mon image est-elle toujours (0, 0) ?

Pourquoi ma détection de collision Pygame renvoie-t-elle toujours vrai et pourquoi la position de mon image est-elle toujours (0, 0) ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-26 08:17:18186parcourir

Why Does My Pygame Collision Detection Always Return True, and Why Is My Image Position Always (0, 0)?

Dépannage de la détection de collision et du positionnement de l'image dans Pygame

Problème de détection de collision : toujours renvoyer « Vrai »

L'un des La raison la plus courante pour laquelle une fonction de détection de collision renvoie « Vrai » alors qu'elle ne devrait pas utiliser des informations de coordonnées incorrectes. Dans votre code, les sprites Ball et Obstacle ont des attributs x et y supplémentaires, mais la méthode get_rect() de l'objet Surface ne met pas automatiquement à jour sa position en fonction de ces attributs.

Solution :

Pour résoudre ce problème, vous devez définir manuellement la position du rectangle en utilisant l'argument mot-clé topleft lors de l'appel get_rect() :

self.rect = self.image.get_rect(topleft=(self.x, self.y))

Problème de positionnement de l'image : retour toujours (0, 0)

Par défaut, les coordonnées de l'objet Surface sont toujours définies sur ( 0, 0), quel que soit l’endroit où il est affiché sur l’écran. Lorsque vous affichez l'image sur l'écran du jeu, vous devez fournir les coordonnées correctes à l'endroit où vous souhaitez qu'elle soit dessinée.

Solution :

Vous pouvez simplement utiliser les coordonnées stocké dans l'attribut rect lors du blitting de l'image :

gameDisplay.blit(self.image, self.rect)

Supplémentaire Conseils :

  • Utilisez un pygame.sprite.Group pour gérer les sprites. Cela simplifie le dessin et la détection des collisions.
  • Évitez d'utiliser des attributs x et y supplémentaires pour les sprites. Au lieu de cela, comptez sur la position du rectangle pour obtenir des informations sur la position.
  • Consultez attentivement la documentation pour connaître les fonctions telles que get_rect() afin de comprendre leur comportement et leurs exigences.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn