Как вы проверяете на столкновение в рицах? - PullRequest
1 голос
/ 18 мая 2019

Как проверить наличие коллизий в рицах?
Это на самом деле не работает. (Что я делаю)

Я уже пробовал:

    def goDownStairs(self):
        if self.rect.colliderect(self.rect.right, self.game.stair.rect.left):
            self.level += 1
            self.game.load_data(self.level)

но это дало ошибку:

 File "/home/hackings/PycharmProjects/Tile_Game/Sprites.py", line 25, in goDownStairs
if self.rect.colliderect(self.rect.right, self.game.stair.rect.left):
 TypeError: Argument must be rect style object  

Это мой код:

ИГРОК:

def goDownStairs(self):
    if self.rect.colliderect(self.rect.right, self.game.stair.rect.left):
        self.level += 1
        self.game.load_data(self.level)

ИГРА:

def run(self):
    # game loop - set self.playing = False to end the game
    self.playing = True
    while self.playing:
        self.dt = self.clock.tick(FPS) / 1000
        self.events()
        self.update()
        self.draw()
        self.player.move()
        self.player.goDownStairs()


def load_data(self, level):
    gameFolder = path.dirname(__file__)
    self.mapData = []
    self.level = level
    if level < 4:
        print(level)
        with open(path.join(gameFolder, 'Maps/' + str(level)), 'rt') as f:
            for line in f:
                self.mapData.append(line)

Я просто ожидал, что он изменит уровень и загрузит новый уровень, но он сделал это:

 TypeError: Argument must be rect style object

     if self.rect.colliderect(self.rect.right, self.game.stair.rect.left):

1 Ответ

1 голос
/ 18 мая 2019

Из документов :

colliderect ()
проверить, перекрываются ли два прямоугольника
colliderect (Rect) -> bool
Возвращает true, если естьчасть перекрытия прямоугольника (кроме верхнего + нижнего или левого + правого краев).

Это означает, что colliderect принимает только один аргумент, который должен быть Rect.
Попробуйте с:

self.rect.colliderect(self.game.stair.rect)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...