如何将精灵的矩形放在图像的中心

问题描述 投票:0回答:2

enter image description here

这是我到目前为止所拥有的,我已经绘制了矩形来跟踪它,这是代码:

class Personagem(pygame.sprite.Sprite):
      def __init__(self,x,y):
            super().__init__()
            self.imagem = pygame.image.load('sprites/frente-parado.bmp')
            self.rect = self.imagem.get_rect()
            self.rect.height = 20
            self.rect.width = 20
            self.rect.centerx = x
            self.rect.centery = y
            self.velocidade_x = 0
            self.velocidade_y = 0

我一直在这里查看类似的问题,我尝试创建另一个从原始左下角开始的矩形,但后来我无法碰撞它,因为精灵最终有两个矩形

感谢任何回答,抱歉英语不好

python pygame sprite rect collider
2个回答
0
投票

要使精灵的矩形在图像中居中,您可以使用矩形的 center 属性代替 centerx 和 centery。这是以 rect 为中心的代码的更新版本:

class Personagem(pygame.sprite.Sprite):
    def __init__(self, x, y):
        super().__init__()
        self.imagem = pygame.image.load('sprites/frente-parado.bmp')
        self.rect = self.imagem.get_rect()
        self.rect.width = 20
        self.rect.height = 20
        self.rect.center = (x, y)
        self.velocidade_x = 0
        self.velocidade_y = 0

在此版本中,矩形的中心属性设置为元组 (x, y),这将使矩形在图像中居中。请注意,我还调换了宽度和高度属性的顺序,因为建议在使用 pygame 时将宽度设置在高度之前。


0
投票

好吧,我找到了一种方法,它有点丑但有效

x = per.rect.topleft[0] - 10
y = per.rect.topleft[1] - 10
tela.blit(per.imagem,(x,y))

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.