Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapa Pengesanan Perlanggaran Pygame Saya Sentiasa Kembali Benar, dan Mengapa Kedudukan Imej Saya Sentiasa (0, 0)?

Mengapa Pengesanan Perlanggaran Pygame Saya Sentiasa Kembali Benar, dan Mengapa Kedudukan Imej Saya Sentiasa (0, 0)?

Patricia Arquette
Lepaskan: 2024-12-26 08:17:18
asal
184 orang telah melayarinya

Why Does My Pygame Collision Detection Always Return True, and Why Is My Image Position Always (0, 0)?

Menyelesaikan Masalah Pengesanan Perlanggaran dan Kedudukan Imej dalam Pygame

Isu Pengesanan Perlanggaran: Sentiasa Mengembalikan 'Benar'

Salah satu daripada sebab yang paling biasa mengapa fungsi pengesanan perlanggaran mengembalikan 'Benar' apabila ia tidak sepatutnya menggunakan maklumat koordinat yang salah. Dalam kod anda, sprite Ball dan Obstacle mempunyai atribut x dan y tambahan, tetapi kaedah get_rect() objek Surface tidak mengemas kini kedudukannya secara automatik berdasarkan atribut ini.

Penyelesaian:

Untuk menyelesaikan isu ini, anda harus menetapkan kedudukan segi empat tepat secara manual menggunakan argumen kata kunci topleft semasa memanggil get_rect():

self.rect = self.image.get_rect(topleft=(self.x, self.y))
Salin selepas log masuk

Isu Kedudukan Imej: Sentiasa Mengembalikan (0, 0)

Secara lalai, koordinat objek Surface sentiasa ditetapkan kepada ( 0, 0), tidak kira di mana ia dipaparkan pada skrin. Apabila memancarkan imej ke paparan permainan, anda perlu menyediakan koordinat yang betul di mana anda mahu ia dilukis.

Penyelesaian:

Anda boleh menggunakan koordinat dengan mudah disimpan dalam atribut rect apabila menyelitkan imej:

gameDisplay.blit(self.image, self.rect)
Salin selepas log masuk

Tambahan Petua:

  • Gunakan pygame.sprite.Group untuk mengurus sprite. Ia memudahkan pengesanan lukisan dan perlanggaran.
  • Elakkan menggunakan atribut x dan y tambahan untuk sprite. Sebaliknya, bergantung pada kedudukan segi empat tepat untuk maklumat kedudukan.
  • Semak dokumentasi dengan teliti untuk fungsi seperti get_rect() untuk memahami tingkah laku dan keperluannya.

Atas ialah kandungan terperinci Mengapa Pengesanan Perlanggaran Pygame Saya Sentiasa Kembali Benar, dan Mengapa Kedudukan Imej Saya Sentiasa (0, 0)?. 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