Mon problème est les collisions, j’essaie de gérer les collisions entre mon personnage qui se déplacent en utilisant les pixels, et les murs de la map positionné en case par case (création des murs comme dans le tp DK), mon personnage se déplace mais lorsque je suis sur un mur je le traverse, et je bloc environ au quart et trois quarts de la fenêtre sur l'axe des abscisses. Je ne peux donc ni atteindre le coté droit ni le coté gauche.
Voici mon code
class Perso:
"""Classe permettant de créer un personnage"""
def __init__(self, droite, gauche, haut, bas, niveau, position_x, position_y):
#Sprites du personnage
self.gauche = pygame.image.load(gauche).convert_alpha()
self.droite = pygame.image.load(droite).convert_alpha()
self.haut = pygame.image.load(haut).convert_alpha()
self.bas = pygame.image.load(bas).convert_alpha()
#Position du personnage en pixels et en cases
self.x = position_x
self.y = position_y
self.case_x = int(self.x / taille_sprite_x)
self.case_y = int(self.y / taille_sprite_y)
#Direction par défaut
self.direction = self.gauche
#Niveau dans lequel le personnage se trouve
self.niveau = niveau
#Vie par defaut
self.vie = 100
def deplacer(self, direction):
"""Methode permettant de déplacer le personnage"""
#Déplacement vers la droite
if direction == 'droite':
#Pour ne pas dépasser l'écran
if self.x < (800-taille_sprite_x):
#On vérifie que la case de destination n'est pas un mur
if self.niveau.structure[self.case_y][self.case_x+1] != 'm':
#calcul de la case sur laquelle est le personnage
self.case_x = int(self.x / taille_sprite_x)
#on se deplace vers la droite de 5 pixels
self.x += 5
#Image dans la bonne direction
self.direction = self.droite
Merci de bien vouloir m'aider, la moindre réponse/aide pour me mettre sur la bonne voix ne sera que bénéfique.
- Edité par MrDiem 20 mai 2013 à 22:21:44
[Pygame] collisions
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.