我正在制作一个游戏并且'按下键'它将角色(自我)向下移动..我正在尝试用碰撞检测修复一些事情。我在下面的例子中的问题是第二行总是返回True。我在第二行尝试做的是说“如果角色与小部件发生碰撞,但是角色y值低于它与高度碰撞的小部件高度的一半,则将角色向下移动。
因为它总是返回True,所以我的角色可以向下移动而不管任何碰撞,无论字符y值如何(它可以在中间部分的小部件之上,我仍然可以向下移动)。
我在这里做错了什么?
elif keycode[1] == 'down':
if any(self.collide_widget(i) and self.y < (i.y+(i.height/2)) for i in listofwidgets):
self.y -=6
self.source='characters/lilmoney/walkdown.zip'
elif (i.collide_point(self.x, self.top) for i in listofwidgets):
self.source='characters/lilmoney/lilmoneyfront.png'
答案 0 :(得分:3)
您在any
声明中遗漏了elif
。所以,你留下了一台发电机,这总是正确的。因此,将该语句更改为
elif any(i.collide_point(self.x, self.top) for i in listofwidgets):