python-3.x 如何在PyGame中播放碰撞声音,当玩家碰到窗口边缘而没有声音继续播放?

ruyhziif  于 2023-01-06  发布在  Python
关注(0)|答案(1)|浏览(170)

我试图在PyGame中使用if语句,以便在玩家碰到屏幕边缘时使声音影响游戏,但是我似乎在if语句中犯了一个错误;换句话说,我检查条件的方式是错误的,因为我不想让我的声音效果在用户位于屏幕边缘时持续播放,我想让声音在播放器位于屏幕边缘时播放一次。我也不想让我的播放器滑出屏幕。
我在名为'bump_sound'的变量中创建了一个处理播放命令的变量:
bump_sound = pygame.混音器.声音(“bump.wav”)
下面是if语句的样子:

# These if statements check to make sure the player won't slide off the screen.
    # They also check if the player hits the edge; if so, play the bump sound.

    if self.rect.x >= 650:
        self.rect.x = 650
        bump_sound.play()

    if self.rect.x >= 650:
        self.rect.x = 650
    
    if self.rect.x < 0:
        self.rect.x = 0
        bump_sound.play()

    if self.rect.y > 325:
        self.rect.y = 325
        bump_sound.play()

    if self.rect.y < 0:
        self.rect.y = 0
        bump_sound.play()

谢天谢地,玩家不会从屏幕上滑下来;但是,声音一直在播放。

2uluyalo

2uluyalo1#

您必须使用>而不是>=

if self.rect.x > 650:
    self.rect.x = 650
    bump_sound.play()

另一种方法是使用布尔变量。一个指示玩家是否击中边缘,另一个指示玩家是否在前一帧中击中边缘。只有当玩家在前一帧中触及边缘但没有击中时,才会播放声音:
x一个一个一个一个x一个一个二个x

相关问题