使用 pygame 移动精灵
Moving a sprite with pygame
这是我的角色代码 class:
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'
有人可以解释一下吗?谢谢
在这段代码中:
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")
您正在覆盖您的字符并为其分配 pygame.Surface。
所以在游戏循环的下一次迭代中它失败了。
这是我的角色代码 class:
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'
有人可以解释一下吗?谢谢
在这段代码中:
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")
您正在覆盖您的字符并为其分配 pygame.Surface。 所以在游戏循环的下一次迭代中它失败了。