我正在写一个pygame你基本上要躲闪星星。它有一个商店,你可以买一个力场,但我只想要力场工作3次,然后当你购买有效的力场force_field = True
时离开,但我碰撞碰撞部分有问题self.force_count -=1
问题是这会循环每一秒钟,因为碰撞发生了一秒钟,它会循环三次然后你输了
以下是我的If Statments:
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次,然后通过屏幕进入游戏,而不是只计数到一个然后进入agian
所以我想知道我怎么能做到这一点,只需在瞬间加上3并结束
如果你仔细阅读了所有这些,那么请帮助我!
-ChristianCareaga
答案 0 :(得分:3)
一种选择是,当它击中船时让你的星星消失。也许爆炸或其他东西:)
否则,如果您已经击中此星,则可以将带有bool标记的星标记为“碰撞”以请求。但是这样一来,即使你的船已经“离开”了这颗恒星再次遇到它,你也只能击中它一次。