Ne peux pas obtenir les tuiles d'entrer en collision avec le joueur [dupliquer]

0

La question

Donc, je suis en train de faire une tuile de base de jeu de plateforme et je ne peux pas obtenir les collisions de travail.

Ce code dans la boucle principale affiche les tuiles:

tile_rects = []
    y = 0
    for layer in game_map:
        x = 0
        for tile in layer:
            if tile == '1':
                display.blit(dirt, (x * tile_size, y * tile_size))
            if tile == '2':
                display.blit(grass, (x * tile_size, y * tile_size))
            if tile != '0':
                tile_rects.append(pygame.Rect(x * tile_size, y * tile_size, tile_size, tile_size))
            x += 1
        y += 1

Et ce code est censé faire les collisions de travail mais de toute façon ça ne marche pas, c'est dans la classe de joueur.

def collisions(self):
    global tile_rects
    self.rect.x += self.x_vel
    self.rect.y += self.y_vel
    for tile_rect in tile_rects:
        if self.rect.colliderect(tile_rect):
            if abs(tile_rect.top - self.rect.bottom) < 10:
                self.y_vel -= 1
            if abs(tile_rect.bottom - self.rect.top) < 10:
                self.y_vel += 1
            if abs(tile_rect.right - self.rect.left) < 10:
                self.x_vel -= 1
            if abs(tile_rect.left - self.rect.right) < 10:
                self.x_vel += 1
    else: tile_rects = []

Toutes les corrections?

pygame python
2021-11-23 13:16:31
1

La meilleure réponse

0

Vous devez utiliser collidelistall() au lieu de cela colliderect(). Il va vérifier si rect si le fait de toucher tout rect de la liste.

2021-11-24 09:24:55

Dans d'autres langues

Cette page est dans d'autres langues

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................