Pixel Perfect Collision внутри класса с использованием растровых изображений - PullRequest
0 голосов
/ 28 марта 2020

Короче говоря, все в порядке, пока я не попытаюсь использовать сопоставление пикселей для столкновения в update (). Я понятия не имею, как заставить это работать. Каждая переменная в следующем коде, которая не определена в этом сегменте, определяется в другом месте моего кода. Надеюсь, кто-нибудь может мне помочь! (Это все вне игры l oop, группа спрайтов обновляется и рисуется в основном l oop).

Это мой код:

START_BAT_COUNT = 30
BAT_IMAGE_PATH = os.path.join( 'Sprites', 'Bat_enemy', 'Bat-1.png' )

bat_image = pygame.image.load(BAT_IMAGE_PATH).convert_alpha()
bat_image = pygame.transform.scale(bat_image, (80, 70))


class Bat(pygame.sprite.Sprite):
    def __init__(self, bat_x, bat_y, bat_image, bat_health, bat_immune):
        pygame.sprite.Sprite.__init__(self)
        self.bat_health = bat_health
        self.bat_immune = bat_immune
        self.image = bat_image
        self.rect = self.image.get_rect()
        self.mask = pygame.mask.from_surface(self.image)
        self.rect.topleft = (bat_x, bat_y)

    def update(self):
        offsetP2B = (int(x - bat_x), int(y - bat_y)) #Player to Bat
        resultP2B = self.mask.overlap(player_mask, offsetP2B)
        if resultP2B:
            if player_immune == False:
                player_health -= 1
                immune_time = pygame.time.get_ticks()
                player_immune = True

        offsetS2B = (int(fx - batx), int(fy - baty)) #Sword to Bat 
        resultS2B = bat_mask.overlap(sword_mask, offsetS2B)
        if resultS2B:
            if bat_immune == False:
                if fire == True:
                    bat_health -= 1
                    bat_time = pygame.time.get_ticks()
                    bat_immune = True        

all_bats = pygame.sprite.Group()

for i in range(START_BAT_COUNT):
    bat_x = (random.randint(0, 500))
    bat_y = (random.randint(0, 500))
    bat_health = 5
    bat_immune = False

    new_bat = Bat(bat_x, bat_y, bat_image, bat_health, bat_immune)
    all_bats.add(new_bat)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...