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
Lepaskan: 2024-12-12 20:05:11
asal
438 orang telah melayarinya

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)
Salin selepas log masuk
  • 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)
    Salin selepas log masuk
  • 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
    Salin selepas log masuk

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))
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan