Я пытаюсь создать сцену для созданной мной пигмеи, и в этой пигме я пытаюсь заставить спрайта основного игрока появляться в правой части экрана, прежде чем медленно двигаться к центр. По какой-то причине, вместо того, чтобы двигаться, он просто остается совершенно неподвижным, несмотря на то, что та же логика, которую я применил в кат-сцене, прекрасно работает в основной игре, когда я использую нажатия клавиш для перемещения игрока вместо автоматического обновления.
Я просто следовал той же логике, что и в основной игре, за исключением того, что вместо перемещения в результате нажатия клавиши он перемещается в результате обновления спрайта. Это мой код для спрайта:
class Player(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.Surface((30, 60))
self.image = pygame.image.load("soldier.png").convert_alpha()
self.rect = self.image.get_rect()
self.rect.x = WIDTH - 30
self.rect.y = HEIGHT - 60
self.speedx = -5
self.speedy = 0
self.count = 0
tru = False
def update(self):
self.count += 1
if self.count > 10:
self.speedx -= 5
self.count = 0
else:
self.speedx = 0
if self.rect.x < WIDTH / 2:
self.speedx = 0
self.rect.x += self.speedx
А вот и мой основной игровой цикл
game_over = True
running = True
CurrentLevel = 1
while running:
all_sprites = pygame.sprite.Group()
curtime = pygame.time.get_ticks()
platforms = pygame.sprite.Group()
bullets = pygame.sprite.Group()
grounds = pygame.sprite.Group()
thentime = pygame.time.get_ticks()
for plat in PLATFORMS:
p = Platform(*plat)
all_sprites.add(p)
platforms.add(p)
for gro in GROUNDS:
g = Ground(*gro)
all_sprites.add(g)
grounds.add(g)
player = Player()
all_sprites.add(player)
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_d:
running = False
all_sprites.update()
screen.fill(WHITE)
screen.blit(bg, [0, 0])
all_sprites.draw(screen)
pygame.display.flip()
Вот каков будет результат:
выход
Этот спрайт игрока в дальнем правом углу экрана просто остается там и не двигается так, как должен.
Кто-нибудь знает, что происходит?