Как я могу сделать маску столкновения? - PullRequest
1 голос
/ 08 мая 2019

Я пытаюсь создать маску столкновения, чтобы определить, сталкиваются ли два спрайта, но это не работает вообще, у меня мгновенный сбой. Можете ли вы мне помочь?

Мой код:

        Player.rect = Player.image.get_rect()
        oc1.rect = oc1.image.get_rect()
        mask_1 = pg.mask.from_surface(Player)
        mask_2 = pg.mask.from_surface(oc1)
        Cm = pg.sprite.collide_mask(mask_1, mask_2)
        if Cm != None :
            print('life - 1')

1 Ответ

1 голос
/ 08 мая 2019

См. Документацию pygame.sprite.collide_mask():

Обнаружение столкновения между двумя спрайтами с использованием масок.

collide_mask(SpriteLeft, SpriteRight) -> point

Тесты на столкновениемежду двумя спрайтами , проверяя, перекрываются ли их битовые маски.Если у спрайтов есть атрибут «маска», который используется в качестве маски, в противном случае маска создается из изображения спрайта.Предназначен для передачи в качестве функции обратного вызова с коллизиями в функции * collide.Спрайты должны иметь «прямоугольник» и необязательный атрибут «маска».

Параметры .collide_mask() должны быть 2 pygame.sprite.Sprite объектов, а не 2 маски pygame.mask.Mask объекты:

В дальнейшем предполагается, что Player и oc1 являются pygame.sprite.Sprite объектами:

Player.rect = Player.image.get_rect()
oc1.rect = oc1.image.get_rect()

Cm = pg.sprite.collide_mask(Player, oc1)

if Cm != None :
    print('life - 1')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...