scrollen zu einem Plattformer in PyGame
In Plattformer -Spielen navigieren die Spieler durch Ebenen, während ihre Position auf dem Bildschirm zentriert bleibt. Dieser Effekt wird durch Scrollen erzielt, was es der Spielwelt ermöglicht, sich unabhängig von der Position des Spielers zu bewegen.
implementieren Scrollen:
, um das Scrollen in Pygame zu implementieren, verwenden Sie eine Kamera -Klasse, die den Ausfall zwischen der Spielwelt und der Spielersposition und der Spielersposition. Dieser Offset wird dann auf die Position aller Spieleinheiten angewendet, wenn sie auf dem Bildschirm gezeichnet werden.
Erstellen der Kameraklasse:
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)
There are various ways to implement the camera_func:
Centering the Player:def simple_camera(camera, target_rect): l, t, _, _ = target_rect # l = links, t = top _, _, w, H = Kamera # W = Breite, H = Höhe 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)beibehalten von Ebenengrenzen:
def komplex_camera (Kamera, Target_Rect): x = -target_rect.center [0] win_width/2 y = -target_rect.center [1] Win_Height/2 camera.topleft = (pygame.Vector2 ((x, y)) - pygame.Vector2 (camera.topleft)) * 0.06 # Fügen Sie etwas Glättekühle hinzu camera.x = max (-(camera.width-win_width), min (0, camera.x)) camera.y = max (-(camera.height-win_height), min (0, camera.y)) return camera
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)scrollen auf Entitäten anwenden:
, um Scrollen anzuwenden, die Kameraklasse zu instanziieren, und rufen Sie ihre Aktualisierung an und wenden Sie die Methoden in der Hauptspiel -Loop an: # Erstellen Sie die Kamera erstellen und wenden Sie Methoden an. camera = camera (complex_camera, Total_level_width, Total_Level_Height) # Aktualisieren Sie die Kamera camera.update (Spieler) # Scrollen auf alle Entitäten für e in Entitäten: screen.blit (e.image, camera.apply (e))
Zusätzliche Überlegungen:
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)
Verwenden Sie eine layertedUpdates
Subklassen-Subklassen, um die Kamera-Acal-Acal-Acal-Acal-Acal-Acal-Acal-Acal-Acal-Acal-Acal-Acal-Gruppen anzupassen. Bedürfnisse.Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3