python - 你如何检查矩形中的碰撞?
问题描述
你如何检查矩形中的碰撞?
它并没有真正起作用。(我在做什么)
我已经尝试过:
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):
解决方案
从文档:
colliderect()
测试两个矩形是否重叠
colliderect(Rect) -> bool
如果任一矩形的任何部分重叠(顶部+底部或左+右边缘除外),则返回true。
这意味着colliderect
只需要一个应该是 a 的参数Rect
。
尝试:
self.rect.colliderect(self.game.stair.rect)
推荐阅读
- java - 查找在 param 方法中传递的 Object 的类型
- sql - 如何用外键替换重复的列?
- java - cucumber-jvm 在示例级别/步骤级别没有识别钩子
- excel - 带有所有格式的Delphi(OLE)的Excel复制粘贴?
- javascript - 我需要将 jpages 与排序 javascript 结合起来
- python - “ValueError:索引包含重复条目,无法重塑”Pandas DataReader
- python - Kivy 是否支持 Python 3.7?
- react-native - 如何为 IOS 生成发布版本 ..?
- scala - 如何在 Spark 2 中使用 HBase?
- python - 如何使用 pandas 将 dict(具有多个列表的键)转储到 csv?