Расположение и добавление врагов в Pygame 2D прокрутки платформер? - PullRequest
0 голосов
/ 04 февраля 2019

Я пытался создать платформер боковой прокрутки типа mario, используя python и модуль pygame.Я использовал учебники из programarcadegames для кодирования платформ и игроков, я просто не могу понять, как реализовать врагов, которые появляются по определенной координате x и y, и добавить их как спрайт с возможностью столкновения (который «убивает» игрока в одномхит)?

Код учебника приведен ниже:

http://programarcadegames.com/python_examples/show_file.php?file=platform_moving.py

Я пытался создать базовый класс для вражеского спрайта и заставить его двигаться вперед и назад.но позиционирование это моя главная проблема.

Вот мой код: (Враг немного глючит при прокрутке уровня)

class Enemy(pygame.sprite.Sprite):

    def __init__(self):

        super().__init__()

        width = 30
        height = 30
        self.image = pygame.Surface([width, height])
        self.image.fill(BLUE)

        # Set a reference to the image rect.
        self.rect = self.image.get_rect()

        # Set speed vector of player
        self.change_x = random.randint(3, 4)
        self.change_y = 0

    def update(self):

        self.rect.centerx += self.change_x
        if self.rect.right <= 0 or self.rect.left >= 100:
            self.change_x *= -1

1 Ответ

0 голосов
/ 05 февраля 2019

для столкновения с игроком я рекомендую вам что-то вроде этого:

#in your gameloop
playerEnemyCollision = pygame.sprite.spritecollide(player, enemies, False)

"враги" должны быть группой спрайтов. Для создания группы спрайтов:

#outside your gameloop
enemies = pygame.sprite.Group()

Чтобы создать нового врага и добавить его в группу, просто наберите:

#outside your gameloop
en = Enemy()
en.rect.x = XX #set your Enemies x-Position
en.rect.y = YY #set your Enemies y-Position
en.add(enemies) #adds the enemy "en" to the sprite-group "enemies"

Теперь вы можете проверить наличие столкновений с:

#in your gameloop
if playerEnemyCollision:
    #your "kill-player-code" goes her
    #Example:
    player.kill()

Это в большинстве случаев нетакая хорошая идея, чтобы изменить местоположение спрайта для нормального движения вне вашего "класса врага".Я надеюсь, что смогу помочь вам с вашим вопросом.Twistios

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...