0

我正在写一个 pygame,你基本上必须躲避星星。它有一家商店,您可以购买力场,但我只希望力场工作 3 次,然后在您购买有效的力场时消失force_field = True,但是当它们发生碰撞时我遇到了碰撞部分self.force_count -=1的问题,问题是这样每隔几分之一循环一次,因为碰撞发生了一秒钟,它循环了三遍,然后你就输了

这是我的如果状态:

    star_col = self.player_r.colliderect(self.star_r)or self.player_r.colliderect(self.star2_r)or self.player_r.colliderect(self.star3_r)

    if self.force_field == True and star_col == True:
        self.force_count+=1
        print "ship hit"
        if self.force_count == 3:
            self.force_field = False


    if star_col == True and self.force_field == False:
        self.force_field = 0
        self.state = 0
        if self.money > 0:
            self.money = self.money - 25

打印只是为了测试,但是当我与一颗星星碰撞时,它会打印 3 次,然后通过屏幕进入游戏,而不是只数到一个然后再继续

所以我想知道我怎么能做到这一点,而只需在一瞬间添加 3 并结束

如果您阅读了所有这些内容,非常感谢您,请帮助我!

-ChristianCareaga

4

1 回答 1

3

一种选择是,当星星撞到船时让星星消失。也许有一个很好的爆炸或其他东西:)

否则,您可以将带有布尔标志的星星标记为“碰撞”,以请求您是否已经击中该星星。但是这样一来,即使你的船已经“离开”了恒星并再次撞上它,你也只能击中它一次。

于 2013-06-06T21:56:10.137 回答