【问题标题】:pygame how to actualize rect of spritepygame如何实现精灵的矩形
【发布时间】:2019-02-20 21:55:31
【问题描述】:

我正在学习 pygame,但遇到了一个问题: 当我试图通过更改变量 self.image 然后 self.rect 的内容来更改精灵的图像时,它不会显示/执行这个新图像。这是代码,希望能让自己理解。

all_sprites_list = pygame.sprite.Group()
luffy_sprites_ls = pygame.sprite.Group()

class luffy(pygame.sprite.Sprite):
    """docstring pour le personnage"""
    def __init__(self):
        self.lsLuffy = []
        self.lsLuffySauter = []
        super().__init__()
        self.imageAll = SpriteSheet("images/attaquesLuffy.png")
        #loading some img to put them in a lsLuffySauter
        self.image = self.imageAll.get_image(35, 74, 20, 95)
        self.lsLuffySauter.append(self.image)
        self.image2 = self.imageAll.get_image(200, 300, 300,300)
        self.lsLuffySauter.append(self.image2)

        self.rect = self.image.get_rect()
        self.rect.x = 500
        self.rect.y = 500
        all_sprites_list.add(self)
        self.positionX = 500
        self.positionY = 500

    def sauter(self):
        """ Called when user hits 'jump' button. """
        self.current_image = self.lsLuffySauter[0]
        self.positionY -= 10
        self.rect = self.current_image.get_rect()
        self.rect.x = self.positionX
        self.rect.y = self.positionY
        luffy_sprites_ls.empty()
        luffy_sprites_ls.add(self)
        #all_sprites_list.update()

#Code to draw in the screen
    screen.fill(WHITE)
    all_sprites_list.draw((screen))
    luffy_sprites_ls.draw((screen))
    pygame.display.flip()
    clock.tick(100)

【问题讨论】:

    标签: python pygame sprite


    【解决方案1】:

    pygame.sprite.Group.draw() 被调用时,就像在luffy_sprites_ls.draw((screen)) 中一样,组中的每个精灵都会在sprite.rect 处将其sprite.image 渲染到屏幕上。

    您的sauter() 函数正在更改luffy.rect,但没有更改luffy.image(它正在更改luffy.current_image)。

    可能你想要这样的东西:

    def sauter(self):
        """ Called when user hits 'jump' button. """
        self.image = self.lsLuffySauter[0]
        self.positionY -= 10
        self.rect = self.image.get_rect()
        self.rect.x = self.positionX
        self.rect.y = self.positionY
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多