【发布时间】:2019-12-18 06:10:50
【问题描述】:
我正在制作一个精灵收集游戏,我收集精灵并计算分数。如果我撞到墙上,它会发出撞墙的声音。撞墙的时候,我只希望声音播放一次,直到再次满足要求时再播放。这是我与墙壁发生声音碰撞的代码。
def wallCollide():
if player.rect.x == 1 and player.rect.y < 479:
bumpWall.play()
if player.rect.y == 1 and player.rect.x < 479:
bumpWall.play()
if player.rect.x == 478 and player.rect.y < 479:
bumpWall.play()
if player.rect.y == 478 and player.rect.x < 479:
bumpWall.play()
【问题讨论】:
-
也许您应该在
if之前设置play = False,并在if内部设置play = True,然后在检查完所有碰撞后使用它来播放sond。或者也许你应该使用player.rect.coliderect(list_with_many_rect) 在一行中检查所有内容。 -
或者你应该将玩家向后移动一点,这样它在碰撞后就不会碰到墙壁。如果您不向后移动,那么它会一直碰撞。
-
或者你也应该检查一下速度。如果你碰了墙但你不动(速度是
0)那么不要播放声音。
标签: python python-3.x pygame