Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapakah Pengesanan Perlanggaran Pygame Saya Sentiasa Kembali Benar, dan Mengapa Kedudukan Segiempat Segiempat Imej Saya Ditetapkan dengan Salah kepada (0, 0)?
Sebab:
Ujian perlanggaran bergantung pada atribut tepat bagi objek Sprite untuk menentukan sama ada ia bersilang. Walau bagaimanapun, kaedah get_rect() dalam kod anda tidak menetapkan kedudukan segi empat tepat kepada koordinat yang dimaksudkan.
Penyelesaian:
Apabila menggunakan get_rect() , anda boleh menentukan kedudukan dengan hujah kata kunci atau menetapkannya pada atribut maya atas segi empat tepat. Gunakan kod yang diperbetulkan ini:
self.rect = self.image.get_rect(topleft=(self.x, self.y))
Sebab:
Anda menambahkan atribut x dan y yang tidak perlu pada sprite dan bukannya bergantung pada kedudukan segi empat tepat. Akibatnya, kedudukan segi empat tepat sentiasa ditetapkan kepada (0, 0) kerana objek Surface tidak mempunyai kedudukan lalai.
Penyelesaian:
Alih keluar atribut x dan y dan gunakan atribut rect untuk menetapkan kedudukan objek Sprite. Berikut ialah kod yang diperbetulkan:
class Ball(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) self.image = pygame.image.load("ball.png") self.rect = self.image.get_rect(topleft=(280, 475)) self.col = False
Anda boleh memudahkan lagi kod anda dengan menggunakan pygame.sprite.Group untuk mengurus objek Sprite. Ini akan mengendalikan lukisan dan mengemas kini secara automatik.
obstacle = Obstacle() ball = Ball() # Create a sprite group and add the sprites to it. all_sprites = pygame.sprite.Group([obstacle, ball]) while not crashed: # [... event handling and game logic] gameDisplay.fill((255, 255, 255)) # Draw all sprites using the group's draw method. all_sprites.draw(gameDisplay) # [... other game loop tasks]
Atas ialah kandungan terperinci Mengapakah Pengesanan Perlanggaran Pygame Saya Sentiasa Kembali Benar, dan Mengapa Kedudukan Segiempat Segiempat Imej Saya Ditetapkan dengan Salah kepada (0, 0)?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!