如何检查矩形中的碰撞?
这不是真的工作。 (我在做什么)
我已经尝试过:
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):
答案 0 :(得分:1)
来自docs:
colliderect()
测试两个矩形是否重叠
colliderect(Rect)-> bool
如果任一矩形的任何部分重叠(顶部,底部或左,右边缘除外),则返回true。
这意味着colliderect
仅接受一个应为Rect
的参数。
尝试:
self.rect.colliderect(self.game.stair.rect)