Ajoutez de défiler à un plateforme dans pygame
dans les jeux de plateforme, les joueurs naviguent à travers les niveaux tandis que leur position à l'écran reste centrée. Cet effet est réalisé grâce à un défilement, ce qui permet au monde du jeu de se déplacer indépendamment de la position du lecteur.
Implémentation de défilement:
pour mettre en œuvre le défilement pygame, utilisez une classe de caméra qui définit le décalage entre le monde du jeu et la position du joueur. Ce décalage est ensuite appliqué à la position de toutes les entités de jeu lorsqu'elles sont dessinées sur l'écran.
Création de la classe de caméra:
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)
Il existe différentes façons d'implémenter le caméra_func:
centrer le lecteur:
def Simple_cama (CAPACRY, Targect): &&] def Simple_cama (CAPACRY, Targect): &&] Def Simple_cama (CAPACRY, Targect): &&]
def Simple_cama (CAPACRY, Targect). l, t, _, _ = target_rect # l = gauche, t = top _, _, w, h = caméra # w = largeur, h = hauteur return rect (-l half_width, -t half_height, w, h)def simple_camera(camera, target_rect): l, t, _, _ = target_rect # l = left, t = top _, _, w, h = camera # w = width, h = height return Rect(-l HALF_WIDTH, -t HALF_HEIGHT, w, h)
maintien des limites de niveau:
def complexe_camera (caméra, cible_rect): x = -target_rect.center [0] win_width / 2 y = -target_rect.center [1] win_height / 2 caméra.topleft = (pygame.vector2 ((x, y)) - pygame.vector2 (caméra.topleft)) * 0,06 # Ajouter de la douceur coolnes caméra.x = max (- (caméra.width-win_width), min (0, caméra.x))) caméra.y = max (- (caméra.height-win_height), min (0, caméra.y)) return caméradef simple_camera(camera, target_rect): l, t, _, _ = target_rect # l = left, t = top _, _, w, h = camera # w = width, h = height return Rect(-l HALF_WIDTH, -t HALF_HEIGHT, w, h)
Appliquer le défilement aux entités:
pour appliquer le défilement, instancier la classe de la caméra et appeler sa mise à jour et appliquer des méthodes dans la boucle de jeu principale:# caméra = caméra (complex_camera, total_level_width, total_level_height) # Mettre à jour l'appareil photo caméra.Update (joueur) # Appliquer le défilement à toutes les entités pour e en entités: Screen.blit (e.image, caméra.Apply (e))
def simple_camera(camera, target_rect): l, t, _, _ = target_rect # l = left, t = top _, _, w, h = camera # w = width, h = height return Rect(-l HALF_WIDTH, -t HALF_HEIGHT, w, h)
Considérations supplémentaires:
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3