【问题标题】:Pygame - SpritePygame - 雪碧
【发布时间】:2018-09-02 18:14:06
【问题描述】:

我正在学习如何在 pygame 中编写游戏代码,我编写了一个简单的 pygame 代码来加载背景并绘制玩家精灵。我画了背景图,之后只画玩家,所以图片不会和玩家图片重叠,然后调用pygame.display.flip()来翻转屏幕。还是不行,为什么?我粘贴了下面使用的图像

import pygame

pygame.init()

black = (0, 0, 0)
width = 800
height = 600
screen = pygame.display.set_mode((width, height))
clock = pygame.time.Clock()
FPS = 60

background_img = pygame.image.load("environment_forest_alt1.png")
backgroundimg_rect = background_img.get_rect()
player_img_idle = pygame.image.load("adventurer-idle-00.png")
player_img_run = pygame.image.load("adventurer-run-00.png")
player_img_attack = pygame.image.load("adventurer-attack1-01.png")
player_img_attack2 = pygame.image.load("adventurer-attack1-02.png")
player_img_attack3 = pygame.image.load("adventurer-attack1-03.png")
player_img_attack4 = pygame.image.load("adventurer-attack1-04.png")
player_img_attacks = [player_img_attack, player_img_attack2, player_img_attack3, player_img_attack4]

class Player(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image = pygame.transform.scale(player_img_idle, (200, 100))
        self.image.set_colorkey(black)
        self.rect = self.image.get_rect()
        self.rect.x = 10
        self.rect.y = height - 10

all_sprites = pygame.sprite.Group()
player = Player()
all_sprites.add(player)

exitGame = False
while not exitGame:
    clock.tick(FPS)
    screen.blit(background_img, backgroundimg_rect)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            exitGame = True

    all_sprites.draw(screen)
    pygame.display.flip()
pygame.quit()
quit()

【问题讨论】:

  • 我试图通过使用我自己制作的两张图片来重现这个问题,但是,“玩家”仍然可见。如果您发布使用的两张图片,player_img_idlebackground_img,我将再次尝试重现该问题。但是,您可以尝试重构您的 while 循环,使其看起来更像常规的 pygame 代码:first (for event in pygame.ev...) 执行所有事件处理,然后渲染背景图像和精灵,翻转屏幕,然后然后调用clock.tick(FPS)
  • @MichealO'Dwyer 发布了图片!
  • 我相信你必须对精灵进行 blit,而不是绘制它们?

标签: pygame


【解决方案1】:

你只是在屏幕之外绘制玩家精灵。如果播放器图像顶部没有那么多空白空间,您会看到它。

换行就行了

self.rect.y = height - 10

 self.rect.y = height - 100

甚至

self.rect.y = height - self.rect.height

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多