我想让爆炸出现然后消失。我的问题是,它要么会出现,要么就不会出现。在
到目前为止,我得到的是:
#Throwing a grenade
if event.key == pygame.K_e and grenadeNum > 0:
Grenade = Explosive([Player.rect.centerx, Player.rect.centery])
for i in range(4, 30):
Grenade.move()
screen.fill([105, 105, 105])
screen.blit(Grenade.image, Grenade.rect)
screen.blit(Gun.image, Gun.rect)
screen.blit(Cliper.image, Cliper.rect)
screen.blit(Bullet.image, Bullet.rect)
screen.blit(Player.image, Player.rect)
screen.blit(BOOM.image, BOOM.rect)
screen.blit(ammo_text, textpos1)
screen.blit(clip_text, textpos2)
screen.blit(nade_text, textpos3)
pygame.display.update()
grenadeNum = grenadeNum - 1
explosion_sound.play()
hide = False
clock.tick(4)
BOOM = Explosion([Grenade.rect.centerx, Grenade.rect.centery])
screen.blit(BOOM.image, BOOM.rect)
hide = True
if hide == False:
BOOM = Explosion([Grenade.rect.centerx, Grenade.rect.centery])
else:
BOOM = Explosion([-100, -100])
您正在事件循环中blitting并等待。 在等待期间,任何操作都将被挂起。在
解决这个问题的办法是把游戏逻辑和输入分开。 因为你在投掷手榴弹,你应该只投掷手榴弹,然后增加一个手榴弹爆炸计数器。经过一段时间后,你可以从游戏中移除手榴弹精灵,并用爆炸代替它。我可以看到你已经有了一个时钟对象,所以只需调用tick,并将其累积到您认为足够为止。你可以在手榴弹类中有一个时间场来决定手榴弹何时爆炸。在
将所有精灵保存在一个列表中是很有用的,这样您就可以为所有精灵调用draw()和update()方法。在
一个小建议:一个简单的pygame模块应该如下所示:
所以扔手榴弹会创造一个新的精灵,它会像其他精灵一样被绘制和更新。在
相关问题 更多 >
编程相关推荐