"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como implementar a rolagem suave nos jogos de jogo de plataformas Pygame?

Como implementar a rolagem suave nos jogos de jogo de plataformas Pygame?

Postado em 2025-03-22
Navegar:885

How to Implement Smooth Scrolling in Pygame Platformer Games?

Adicionar rolagem a um plataforma no pygame

nos jogos do plataforma, os jogadores navegam pelos níveis deles enquanto sua posição na tela permanece centrada. Esse efeito é alcançado através da rolagem, que permite que o mundo dos jogos se mova independentemente da posição do jogador. Este deslocamento é então aplicado à posição de todas as entidades do jogo quando elas são desenhadas na tela. def __init __ (self, câmera_func, largura, altura): self.camera_func = câmera_func self.state = ret (0, 0, largura, altura) Def Aplicar (self, alvo): Return Target.rect.move (self.state.topleft) Def Update (Self, Target): self.state = self.camera_func (self.state, Target.recc)

câmera_func:

determina como a câmera segue o player. pixels. l, t, _, _ = target_rect # l = esquerda, t = topo _, _, w, h = câmera # w = largura, h = altura Return rect (-l half_width, -t half_height, w, h)

MANAZENDO LIMARES DE Nível:

def Complex_camera (câmera, Target_rect): x = -target_rect.center [0] win_width/2 y = -target_rect.center [1] win_height/2 câmera.topleft = (pygame.vector2 ((x, y)) - pygame.vector2 (câmera.topleft)) * 0,06 # Adicione um pouco de suavidade Coolnes câmera.x = max (-(câmera.width-win_width), min (0, câmera.x)) câmera.y = max (-(câmera.height win_height), min (0, câmera.y)) Retorne câmera
class Camera:
    def __init__(self, camera_func, width, height):
        self.camera_func = camera_func
        self.state = Rect(0, 0, width, height)

    def apply(self, target):
        return target.rect.move(self.state.topleft)

    def update(self, target):
        self.state = self.camera_func(self.state, target.rect)
  • aplicando rolagem às entidades:
  • para aplicar a rolagem, instanciar a classe da câmera e chamar sua atualização e aplicar métodos no loop principal do jogo: câmera = câmera (complex_camera, total_level_width, total_level_height) # Atualize a câmera câmera.Update (jogador) # Aplique rolagem a todas as entidades Para E em entidades: screen.blit (e.image, câmera.apply (e))
  • considerações adicionais:

use um splite splite e sprite splite. necessidades.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3