您如何检查直肠中的碰撞?

时间:2019-05-18 01:34:41

标签: python pygame

如何检查矩形中的碰撞?
这不是真的工作。 (我在做什么)

我已经尝试过:

    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 个答案:

答案 0 :(得分:1)

来自docs

  

colliderect()
  测试两个矩形是否重叠
  colliderect(Rect)-> bool
  如果任一矩形的任何部分重叠(顶部,底部或左,右边缘除外),则返回true。

这意味着colliderect仅接受一个应为Rect的参数。
尝试:

self.rect.colliderect(self.game.stair.rect)