„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie implementieren Sie reibungslose Scrollen in Pygame -Plattformer -Spielen?

Wie implementieren Sie reibungslose Scrollen in Pygame -Plattformer -Spielen?

Gepostet am 2025-03-22
Durchsuche:162

How to Implement Smooth Scrolling in Pygame Platformer Games?

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)
  • camera_func: bestimmt, wie die Kamera dem Player folgt. pixels.
  • Camera Functions:

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.
  • behandeln Ebenengrenzen, um zu verhindern, dass die Spieler außerhalb des Bildschirms gehen.
  • , indem Sie diese Schritte befolgen, können Sie das Scrollen in Ihrem Pygame-Plattformer implementieren und eine reibungslose, engagierte Erfahrung für Spieler erstellen.
Neuestes Tutorial Mehr>

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