用pygame移动精灵

时间:2015-07-04 14:50:25

标签: python pygame pygame-surface

这是我的Character类的代码:

right = [2, 0]

class Character(pygame.sprite.Sprite):
    def __init__(self):
        super(Character, self).__init__()

        self.image = pygame.image.load("character_n.png").convert()
        self.image.set_colorkey((25, 25, 25))

        self.rect = self.image.get_rect()

char = Character()

char.rect[0] = 375
char.rect[1] = 400

如果操纵杆向右移动,游戏循环中的代码会将角色向右移动:

h_axis_pos = my_joystick.get_axis(0)
v_axis_pos = my_joystick.get_axis(1)

if h_axis_pos >= 0.50:
    if char.rect.right < 800:
       char.rect = char.rect.move(right)

当角色是一个简单的图像时,此代码工作正常,但现在不起作用。

我很困惑,因为self.rect被初始化并且字符被设置在我选择的坐标处。我尝试在if中使用char.rect [0]并递增它,但仍然出现相同的错误:

if char.rect.right < 800:
AttributeError: 'pygame.Surface' object has no attribute 'rect'

有人可以对此有所了解吗?感谢。

1 个答案:

答案 0 :(得分:2)

在这段代码中:

 if char.rect.right < 800:
      idle = 0
      char.rect = char.rect.move(right)
      char = pygame.image.load("right_n.png")

在行中:

char = pygame.image.load("right_n.png")

你正在覆盖你的char并为它指定一个pygame.Surface。 因此,在游戏循环的下一次迭代中,它失败了。