Tingkatkan pengalaman bermain game Anda dengan game Python Arcade dengan menggabungkan kamera.

Pustaka Arcade Python adalah kerangka kerja yang kuat dan mudah digunakan untuk membuat game 2D. Salah satu fitur utama yang dapat sangat meningkatkan gameplay dan pengalaman pengguna adalah penambahan kamera. Menambahkan kamera ke game Anda memungkinkan manipulasi viewport dinamis, memungkinkan pemain menjelajahi dunia game yang lebih besar, fokus pada area tertentu, atau melacak objek yang sedang bergerak.

Dengan menggerakkan sudut pandang kamera, Anda dapat membuat efek yang menarik secara visual, menyempurnakan mekanika permainan, dan memberikan pengalaman bermain yang lebih imersif.

Buat Game Sederhana

Sebelum memulai, instal pip di perangkat Anda dan gunakan perintah di bawah ini untuk menginstal arcade modul:

pip menginstal arcade

Sekarang, mulailah dengan membuat permainan side-scrolling dasar di mana pemain mengontrol karakter yang dapat bergerak ke kiri dan ke kanan menggunakan tombol panah.

instagram viewer

Kode yang digunakan dalam artikel ini tersedia di sini repositori GitHub dan gratis untuk Anda gunakan di bawah lisensi MIT.

Selain itu, Anda dapat menambahkan penghalang bagi pemain untuk bernavigasi.

impor arcade

SCREEN_WIDTH = 800
LAYAR_TINGGI = 600
MOVEMENT_SPEED = 5

kelasMyGame(arcade. Jendela):
def__init__(diri, lebar, tinggi):
super().__init__(lebar, tinggi)
self.player_x = lebar // 2
self.player_y = tinggi // 2

defmempersiapkan(diri sendiri):
arcade.set_background_color (arcade.color. LANGIT BIRU)

defon_draw(diri sendiri):
arcade.start_render()
arcade.draw_circle_filled (self.player_x, self.player_y, 20, arcade.color. MERAH)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. HIJAU)

defmemperbarui(mandiri, waktu_delta):
lulus

defon_key_press(mandiri, kunci, pengubah):
jika kunci == arcade.kunci. KIRI:
self.player_x -= MOVEMENT_SPEED
elif kunci == arcade.kunci. BENAR:
self.player_x += MOVEMENT_SPEED

jika __nama__ == "__utama__":
game = Permainan Saya (SCREEN_WIDTH, SCREEN_HEIGHT)
game.setup()
arcade.lari()

Menyiapkan Kamera

Untuk menambahkan kamera ke game, buat a Kamera kelas yang mengatur posisi dan gerakan kamera. Kelas ini akan memiliki atribut seperti kamera_x Dan camera_y untuk menyimpan koordinat kamera.

kelasKamera:
def__init__(diri sendiri):
self.kamera_x = 0
self.camera_y = 0

Gerakan Kamera Dengan Input Keyboard

Selanjutnya, modifikasi game on_key_press metode untuk memasukkan kamera gerakan berdasarkan input pemain. Saat pemain bergerak ke kiri atau ke kanan, Anda dapat memperbarui posisi kamera yang sesuai. Selain itu, sesuaikan kode gambar untuk mempertimbangkan posisi kamera saat merender objek game.

kelasMyGame(arcade. Jendela):
def__init__(diri, lebar, tinggi):
super().__init__(lebar, tinggi)
self.kamera = Kamera()
self.player_x = lebar // 2
self.player_y = tinggi // 2

defon_key_press(mandiri, kunci, pengubah):
jika kunci == arcade.kunci. KIRI:
self.player_x -= MOVEMENT_SPEED
self.camera.camera_x -= MOVEMENT_SPEED
elif kunci == arcade.kunci. BENAR:
self.player_x += MOVEMENT_SPEED
self.camera.camera_x += MOVEMENT_SPEED

defon_draw(diri sendiri):
arcade.start_render()
arcade.set_viewport(
diri.camera.camera_x,
self.camera.camera_x + SCREEN_WIDTH,
self.camera.camera_y,
self.camera.camera_y + SCREEN_HEIGHT
)
arcade.draw_circle_filled (self.player_x, self.player_y, 20, arcade.color. MERAH)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. HIJAU)

Gerakan Kamera Dengan Input Mouse

Selain input keyboard, Anda juga dapat mengaktifkan pergerakan kamera berdasarkan input mouse. Misalnya, Anda dapat mengizinkan pemain untuk menggeser kamera dengan menyeret layar. Untuk mencapai ini, modifikasi on_mouse_drag metode untuk memperbarui posisi kamera berdasarkan gerakan mouse.

kelasMyGame(arcade. Jendela):
defon_mouse_drag(self, x, y, dx, dy, tombol, pengubah):
jika tombol == arcade. MOUSE_BUTTON_LEFT:
self.camera.camera_x -= dx
self.camera.camera_y -= dy

Termasuk Fitur Tambahan

Menambahkan kamera ke game Anda membuka banyak kemungkinan untuk fitur dan efek tambahan. Berikut adalah beberapa contoh bagaimana Anda dapat lebih meningkatkan permainan Anda menggunakan sistem kamera.

Fungsi Zoom

Untuk mengimplementasikan fungsionalitas zoom, Anda perlu memperkenalkan a Perbesar variabel di Kamera kelas dan memodifikasi on_mouse_scroll metode untuk memperbarui tingkat zoom berdasarkan gerakan roda mouse. Anda juga perlu menyesuaikan set_viewport parameter untuk mempertimbangkan tingkat zoom.

kelasKamera:
def__init__(diri sendiri):
self.kamera_x = 0
self.camera_y = 0
self.zoom = 1.0

kelasMyGame(arcade. Jendela):

defon_mouse_scroll(diri, x, y, scroll_x, scroll_y):
self.camera.zoom += scroll_y * 0.1

defon_draw(diri sendiri):
arcade.start_render()
arcade.set_viewport(
self.camera.camera_x * self.camera.zoom,
(self.camera.camera_x + SCREEN_WIDTH) * self.camera.zoom,
self.camera.camera_y * self.camera.zoom,
(self.camera.camera_y + SCREEN_HEIGHT) * self.camera.zoom
)
arcade.draw_circle_filled (self.player_x, self.player_y, 20, arcade.color. MERAH)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. HIJAU)

Gerakan Kamera Halus

Untuk mendapatkan pergerakan kamera yang lebih halus, Anda dapat memperkenalkan teknik interpolasi yang disebut interpolasi linier (lerp). Modifikasi memperbarui metode untuk menggerakkan kamera secara bertahap menuju posisi target menggunakan lerp. Ini menciptakan efek transisi yang halus.

kelasKamera:
def__init__(diri sendiri):
self.kamera_x = 0
self.camera_y = 0
self.target_x = 0
self.target_y = 0
self.lerp_speed = 0.1

defmemperbarui(diri sendiri):
self.camera_x = arcade.lerp (self.camera_x, self.target_x, self.lerp_speed)
self.camera_y = arcade.lerp (self.camera_y, self.target_y, self.lerp_speed)

kelasMyGame(arcade. Jendela):

defmemperbarui(mandiri, waktu_delta):
self.camera.target_x = self.player_x - SCREEN_WIDTH // 2
self.camera.target_y = self.player_y - SCREEN_HEIGHT // 2
self.camera.update()

defon_draw(diri sendiri):
arcade.start_render()
arcade.set_viewport(
diri.camera.camera_x,
self.camera.camera_x + SCREEN_WIDTH,
self.camera.camera_y,
self.camera.camera_y + SCREEN_HEIGHT
)
arcade.draw_circle_filled (self.player_x, self.player_y, 20, arcade.color. MERAH)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. HIJAU)

Kendala Kamera

Untuk mencegah kamera bergerak melampaui batas tertentu, Anda dapat memperkenalkan pembatas. Misalnya, Anda dapat menentukan posisi kamera minimum dan maksimum dan memastikan bahwa kamera tetap berada dalam batas tersebut.

kelasKamera:
def__init__(diri sendiri):
self.kamera_x = 0
self.camera_y = 0
self.min_x = 0
self.max_x = 800
self.min_y = 0
self.max_y = 600

defmemperbarui(diri sendiri):
self.camera_x = maks (self.min_x, min (self.camera_x, self.max_x))
self.camera_y = maks (self.min_y, min (self.camera_y, self.max_y))

kelasMyGame(arcade. Jendela):

defmemperbarui(mandiri, waktu_delta):
self.camera.camera_x = self.player_x - SCREEN_WIDTH // 2
self.camera.camera_y = self.player_y - SCREEN_HEIGHT // 2
self.camera.update()

defon_draw(diri sendiri):
arcade.start_render()
arcade.set_viewport(
diri.camera.camera_x,
self.camera.camera_x + SCREEN_WIDTH,
self.camera.camera_y,
self.camera.camera_y + SCREEN_HEIGHT
)
arcade.draw_circle_filled (self.player_x, self.player_y, 20, arcade.color. MERAH)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. HIJAU)

Ini hanyalah beberapa contoh bagaimana Anda dapat memanfaatkan sistem kamera untuk menyertakan fitur dan efek tambahan dalam game Python Arcade Anda.

Anda juga dapat menambahkan banyak fitur tambahan lainnya ke game berbasis Python Anda. Misalnya, Anda dapat membuat kamera mengingat posisinya saat pemain pindah ke tingkat yang berbeda. Ini memastikan bahwa tampilan tetap sama saat bertransisi antar level, memberikan pengalaman yang lancar dan konsisten bagi pemain.

Praktik Terbaik untuk Sistem Kamera

Saat menerapkan sistem kamera di game Python Arcade Anda, penting untuk mengikuti praktik terbaik untuk memastikan fungsionalitas yang optimal dan pengalaman pemain yang lancar. Berikut adalah beberapa pedoman utama yang perlu diingat:

  • Hindari gerakan kamera yang berlebihan: Meskipun kamera dapat menambahkan elemen dinamis ke game Anda, menjaga keseimbangan dan menghindari gerakan kamera yang berlebihan sangatlah penting. Menggeser posisi kamera secara terus-menerus dapat membuat pemain bingung dan menantang mereka untuk menjelajahi dunia game.
  • Uji di berbagai resolusi dan rasio aspek: Penting untuk menguji sistem kamera Anda pada berbagai resolusi layar dan rasio aspek untuk memastikannya bekerja dengan baik di berbagai perangkat dan konfigurasi. Ini akan membantu Anda mengidentifikasi masalah apa pun yang terkait dengan penskalaan area pandang, pemosisian objek, atau penyesuaian rasio aspek.
  • Optimalkan rendering: Sistem kamera berpotensi memengaruhi performa game, terutama saat merender dunia game yang besar atau banyak objek. Untuk mengoptimalkan perenderan, tentukan objek mana yang berada di luar tampilan kamera dan keluarkan dari perenderan.
  • Menangani kasus tepi: Perhatikan kasus tepi di mana kamera mungkin mengalami skenario tertentu, seperti batas, deteksi tabrakan, atau objek yang tumpang tindih. Pastikan sistem kamera menangani kasus ini dengan baik dan memberikan transisi yang mulus atau isyarat visual yang sesuai untuk menunjukkan batasan atau interaksi dengan lingkungan game.

Dengan mengikuti praktik terbaik ini, Anda dapat membuat sistem kamera yang tangguh dan mudah digunakan yang terintegrasi dengan mulus ke dalam game Python Arcade Anda.

Jadikan Game Lebih Menyenangkan Menggunakan Kamera

Dengan menambahkan kamera ke game Python Arcade Anda, Anda dapat sangat meningkatkan imersi dan keterlibatan pemain. Baik itu membuat dunia game yang luas, fokus pada area kritis, atau melacak objek bergerak, sistem kamera menyediakan alat yang ampuh untuk pengembang game.

Memanfaatkan pergerakan kamera, zooming, dan efek tambahan, Anda dapat menciptakan pengalaman memukau yang memikat pemain dan membuat mereka kembali lagi.