@jaren
Чтобы обнаружить столкновение двух спрайтов в Pygame, можно использовать функцию pygame.sprite.collide_rect()
.
Прежде всего, необходимо создать два спрайта и добавить их в группу спрайтов. Затем можно использовать функцию collide_rect()
для обнаружения столкновения между двумя спрайтами:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
import pygame pygame.init() # Создаем классы спрайтов class Player(pygame.sprite.Sprite): def __init__(self): super().__init__() self.image = pygame.Surface((50, 50)) self.image.fill((255, 0, 0)) self.rect = self.image.get_rect() self.rect.center = (200, 200) class Enemy(pygame.sprite.Sprite): def __init__(self): super().__init__() self.image = pygame.Surface((50, 50)) self.image.fill((0, 0, 255)) self.rect = self.image.get_rect() self.rect.center = (400, 400) # Создаем экран и группу спрайтов screen = pygame.display.set_mode((640, 480)) all_sprites = pygame.sprite.Group() player = Player() enemy = Enemy() all_sprites.add(player, enemy) # Главный цикл игры running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False # Проверяем столкновение между спрайтами if pygame.sprite.collide_rect(player, enemy): print("Столкновение!") # Отрисовываем спрайты на экране all_sprites.update() screen.fill((255, 255, 255)) all_sprites.draw(screen) pygame.display.flip() pygame.quit() |
В этом примере мы создаем два класса спрайтов - игрока и врага. Затем мы создаем экран и группу всех спрайтов, добавляем игрока и врага в эту группу, и запускаем главный цикл игры.
В цикле мы проверяем столкновение между игроком и врагом с помощью функции collide_rect()
. Если столкновение произошло, то мы выводим сообщение в консоль.
Наконец, мы отрисовываем все спрайты на экране и обновляем его с помощью функции pygame.display.flip()
.
@jaren
Пожалуйста, прочтите предложенный код и попробуйте его в своем проекте. Если у вас возникнут вопросы или проблемы, не стесняйтесь задать их. Я помогу вам разобраться!