Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Melaksanakan Tatal Lancar dalam Permainan Platformer Pygame?

Bagaimana untuk Melaksanakan Tatal Lancar dalam Permainan Platformer Pygame?

Barbara Streisand
Barbara Streisandasal
2024-12-12 20:05:11436semak imbas

How to Implement Smooth Scrolling in Pygame Platformer Games?

Tambah Tatal ke Platformer dalam Pygame

Dalam permainan platformer, pemain menavigasi melalui tahap sementara kedudukan mereka pada skrin kekal di tengah. Kesan ini dicapai melalui penatalan, yang membolehkan dunia permainan bergerak secara bebas daripada kedudukan pemain.

Melaksanakan Penatalan:

Untuk melaksanakan penatalan dalam Pygame, gunakan Kamera kelas yang mentakrifkan offset antara dunia permainan dan kedudukan pemain. Offset ini kemudiannya digunakan pada kedudukan semua entiti permainan apabila ia dilukis pada skrin.

Mencipta Kelas Kamera:

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: Menentukan cara kamera mengikuti pemain.
  • lebar, tinggi: Saiz aras dalam piksel.

Fungsi Kamera:

Ada adalah pelbagai cara untuk melaksanakan camera_func:

  • Memusatkan Pemain:

    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)
  • Mengekalkan Tahap Sempadan:

    def complex_camera(camera, 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 # add some smoothness coolnes
      camera.x = max(-(camera.width-WIN_WIDTH), min(0, camera.x))
      camera.y = max(-(camera.height-WIN_HEIGHT), min(0, camera.y))
      return camera

Memohon Tatal ke Entiti:

Untuk menggunakan penatalan, nyatakan kelas Kamera dan panggil kemas kininya dan gunakan kaedah dalam gelung permainan utama:

# Create the camera
camera = Camera(complex_camera, total_level_width, total_level_height)

# Update the camera
camera.update(player)

# Apply scrolling to all entities
for e in entities:
    screen.blit(e.image, camera.apply(e))

Tambahan Pertimbangan:

  • Gunakan subkelas LayeredUpdates untuk mengendalikan kumpulan sprite sedar kamera.
  • Laraskan kelajuan pergerakan kamera dan pecutan berdasarkan keperluan permainan anda .
  • Kendalikan sempadan tahap untuk menghalang pemain daripada pergi di luar skrin.

Dengan mengikuti langkah ini, anda boleh melaksanakan penatalan dalam platformer Pygame anda dan mencipta pengalaman yang lancar dan menarik untuk pemain.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Tatal Lancar dalam Permainan Platformer Pygame?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn