我想让它,当我的子弹达到一定的距离,它通过爆炸动画,然后删除自己。我可以让它自己删除,但我不知道如何正确地动画它
enemyShotList = pygame.sprite.spritecollide(bullet, enemyGroup, False)
for enemy in enemyShotList:
enemyGroup.remove(enemy)
bulletGroup.remove(bullet)
currentBulletTime = pygame.time.get_ticks()
currentbulletx = bullet.rect.x
currentbullety = bullet.rect.y
if currentBulletTime - bullet.originalBulletTime > 700:
bulletGroup.remove(bullet)
for i in range(0,15):
screen.blit(bulletpopList[i], [currentbulletx,currentbullety])
以上代码的问题是,它在动画中运行得太快。我不知道如何使它变慢
您似乎已经使用了
Sprite
类,因此很容易在sprite中跟踪时间你应该做的是使用所谓的delta时间。基本上,你需要测量渲染一帧所需的时间,并将该值传递给游戏中“穿越时间”的每个部分。所以当最后一帧用了X毫秒时,一个以S的速度移动的精灵会移动S*X像素。如果下一帧采用Y ms,则相同的精灵将移动S*Y像素
在pygame中,通常使用
Clock
来限制调用其tick
方法的帧速率。此方法还将返回自上次调用以来经过的毫秒数。所以这个值是我们传递给sprite的update
方法的delta时间因为现在每个精灵都知道每一帧经过了多少时间,所以我们可以创建一个实例变量(我们称之为
timer
),将它的值设置为我们希望等待的毫秒数,并减去每一帧的增量时间(我们称之为dt
)。一旦我们点击<= 0
,我们就重置timer
并更改精灵的图像这是一个运行的例子,我一起黑。按任意键发射红色火箭,并试图击中蓝色目标。看那可怕的爆炸
相关问题 更多 >
编程相关推荐