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
Libérer: 2024-12-26 08:17:18
original
182 Les gens l'ont consulté

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))
Copier après la connexion

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)
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal