我正在制作一个游戏果酱,并决定从一些简单的雨开始。一切正常,但是当速度改变时,似乎有一个“轮”的雨在循环的第一次通过,然后在短暂的延迟后,雨将开始持续下降。
图片名称 | 图片 |
---|---|
掉落.png | |
雨0.png | |
雨1.png | |
雨2.png | |
雨3.png |
import pygame as pg
import sys, os
import random
pg.init()
clock = pg.time.Clock()
size = width, height = (800,800)
screen = pg.display.set_mode(size)
class Rain(pg.sprite.Sprite):
def __init__(self):
pg.sprite.Sprite.__init__(self)
self.image = pg.image.load("rain/drop/drop.png").convert_alpha()
self.rect = self.image.get_rect()
self.speed = random.randint(4,10)
self.rect.x = random.randint(0,800)
self.rect.y = random.randint(-400,-1)
self.splash_current = 0
self.splash = []
self.splash_frames()
def update(self):
self.rect.y += self.speed
if self.rect.y > 700:
self.speed = 0
if not self.splash_anim():
pass
def splash_frames(self):
for i in os.listdir("rain/frames"):
for j in range(5):
self.splash.append(pg.image.load(f"rain/frames/{i}").convert_alpha())
def splash_anim(self):
self.splash_current += 1
if self.splash_current == len(self.splash):
self.image = pg.image.load("rain/drop/drop.png").convert_alpha()
self.splash_current = 0
self.rect.y = -200
self.speed = random.randint(4,10)
return False
else:
self.image = self.splash[self.splash_current]
rain_group = pg.sprite.Group()
for i in range(200):
rain = Rain()
rain_group.add(rain)
while True:
for event in pg.event.get():
if event.type == pg.QUIT:
pg.quit()
sys.exit()
screen.fill((93, 109, 110))
rain_group.update()
rain_group.draw(screen)
pg.display.flip()
clock.tick(60)
当 in 的值self.speed
从更改(4,10)
为其他任何值时,它似乎更明显,但它仍然(稍微)引人注目(4,10)
。
我们的目标是让雨水同时开始和落下,这是在第一次尴尬的传球之后发生的。我花了相当长的时间查看代码并进行更改,但我不确定为什么第一次通过的方式会发生这种情况。有什么建议么?