簡體   English   中英

在 Pygame 中單獨移動精靈

[英]Moving sprites individually in Pygame

我試圖讓多個精靈遵循與主要玩家相同的算法。 這是我的 Sprite 代碼

class Zombie(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image = pygame.Surface((10, 10))
        self.image.fill((250, 0, 0))
        self.rect = self.image.get_rect()
        self.rect.x = random.randrange(0, horizon - self.rect.width)
        self.rect.y = random.randrange(0, -100, -100)
        self.vel = random.randrange(5, 10)

    def update(self):
        # find normalized direction vector (dx, dy) between enemy and player
        dx, dy = player.rect.x - zombie.rect.x, player.rect.y - zombie.rect.y
        dist = math.hypot(dx, dy)
        dx, dy = dx / dist, dy / dist
        # move along this normalized vector towards the player at current speed
        zombie.rect.x += dx * zombie.vel
        zombie.rect.y += dy * zombie.vel

這是我制作多個精靈的代碼

all_sprites = pygame.sprite.Group()
mobs = pygame.sprite.Group()
player = Player()
zombie = Zombie()
all_sprites.add(player)
for i in range(8):
    z = Zombie()
    all_sprites.add(z)
    mobs.add(z)

發生的情況是只有一個精靈開始跟隨主要玩家。 我如何讓每個精靈都遵循相同的代碼?

非常感謝 c;

替換zombie. self. 在更新方法中:

class Zombie(pygame.sprite.Sprite):
    # [...]

    def update(self):
        # find normalized direction vector (dx, dy) between enemy and player
        dx, dy = player.rect.x - self.rect.x, player.rect.y - self.rect.y
        dist = math.hypot(dx, dy)
        dx, dy = dx / dist, dy / dist
        # move along this normalized vector towards the player at current speed
        self.rect.x += dx * self.vel
        self.rect.y += dy * self.vel

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM