Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Mengesan Perlanggaran Antara Segi Empat dan Imej dalam Pygame?

Bagaimana untuk Mengesan Perlanggaran Antara Segi Empat dan Imej dalam Pygame?

Mary-Kate Olsen
Lepaskan: 2024-12-21 08:17:13
asal
705 orang telah melayarinya

How to Detect Collisions Between Rectangles and Images in Pygame?

Bagaimana untuk Mengesan Perlanggaran antara Objek dalam Pygame?

Pygame ialah perpustakaan Python yang digunakan secara meluas yang direka untuk pembangunan permainan. Satu aspek penting dalam pembangunan permainan ialah mengesan perlanggaran antara objek. Dalam artikel ini, kami akan menumpukan pada teknik untuk mengesan perlanggaran antara objek segi empat tepat dan imej dalam Pygame.

Kaedah menggunakan Rects

Untuk bermula, kami akan menggunakan pygame.Rect objects dan colliderect() untuk mengesan perlanggaran antara segi empat tepat mengikat dua objek. Segi empat tepat terikat menentukan sempadan objek dalam ruang dua dimensi.

Pembina pygame.Rect mengambil hujah untuk mentakrifkan kedudukan dan dimensi segi empat tepat, seperti yang dilihat di bawah:

rect1 = pygame.Rect(x1, y1, w1, h1)
rect2 = pygame.Rect(x2, y2, w2, h2)
Salin selepas log masuk

di mana x1, y1, w1 dan h1 mewakili kedudukan dan dimensi segi empat tepat pertama, dan x2, y2, w2 dan h2 mewakili segi empat tepat kedua.

Untuk menyemak perlanggaran, kami menggunakan kaedah colliderect() bagi objek Rect, yang mengembalikan True jika segi empat tepat bersilang dan False sebaliknya. Begini cara anda boleh melaksanakan ini:

if rect1.colliderect(rect2):
    # Handle collision logic here
Salin selepas log masuk

Kaedah menggunakan Surfaces with Rects

Jika anda mempunyai imej (diwakili sebagai objek pygame.Surface), anda boleh mendapatkan segi empat tepat terikatnya menggunakan get_rect( ) kaedah. Walau bagaimanapun, adalah penting untuk menetapkan kedudukan imej menggunakan hujah kata kunci, kerana segi empat tepat yang dikembalikan sentiasa bermula pada (0, 0):

player_rect = player_img.get_rect(topleft = (x, y))
for i in range(len(things_cor)):
    thing_rect = things_added[i].get_rect(topleft = things_cor[i])
Salin selepas log masuk

Dengan segi empat tepat ini, anda boleh melakukan ujian perlanggaran antara pemain dan item seperti berikut:

if player_rect.colliderect(thing_rect):
    # Handle collision logic here
Salin selepas log masuk

Masa Kelewatan dalam Gelung Permainan

Dalam kod yang disediakan coretan, anda mempunyai gelung sementara yang berjalan secara berterusan dalam fungsi game_loop(). Jika anda ingin memperkenalkan jeda atau kelewatan dalam gelung, anda boleh menggunakan fungsi pygame.time.get_ticks(). Ia mengembalikan bilangan milisaat yang berlalu sejak pygame.init() dipanggil.

Berikut ialah contoh cara menggunakan pygame.time.get_ticks() untuk membuat kelewatan:

passed_time = pygame.time.get_ticks() # passed time in milliseconds
start_time = 100 * 1000 # start time in milliseconds (100 seconds)

# When the elapsed time reaches or exceeds the start time, execute this logic
if passed_time >= start_time:
    # Execute game logic here, such as moving objects
    x += x_change
Salin selepas log masuk

Pendekatan ini membolehkan anda mengawal masa acara dengan tepat dalam gelung permainan.

Atas ialah kandungan terperinci Bagaimana untuk Mengesan Perlanggaran Antara Segi Empat dan Imej dalam 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