Python pygame精灵动画循环工作不正常
所以,就这么一点点,我请求帮助通过一个名单作为一个雪碧类,你们帮助了,但我遇到了另一堵墙。当我尝试循环精灵列表时,问题出现了 下面是精灵类:Python pygame精灵动画循环工作不正常,python,pygame,sprite,Python,Pygame,Sprite,所以,就这么一点点,我请求帮助通过一个名单作为一个雪碧类,你们帮助了,但我遇到了另一堵墙。当我尝试循环精灵列表时,问题出现了 下面是精灵类: class Player(pygame.sprite.Sprite): def __init__ (self,frames,*groups): self.frame = 0 super(Player,self).__init__(*groups) self.images = []
class Player(pygame.sprite.Sprite):
def __init__ (self,frames,*groups):
self.frame = 0
super(Player,self).__init__(*groups)
self.images = []
self.images.append(frames[self.frame])
self.image = self.images[self.frame]
self.rect = pygame.rect.Rect((320,240),self.image.get_size())
def update(self):
key = pygame.key.get_pressed()
if key[pygame.K_LEFT]:
self.rect.x -= 10
self.frame += 10
if key[pygame.K_RIGHT]:
self.rect.x += 10
self.frame += 1
if key[pygame.K_UP]:
self.rect.y -= 10
self.frame += 1
if key[pygame.K_DOWN]:
self.rect.y += 10
self.frame += 1
if self.frame > 3:
self.frame = 0
这是主要的游戏循环:
class Game(object):
def main(self, screen):
sprite = pygame.image.load('test.png')
frames = sprite_system().slice_sheet(sprite,0,0,64,64,4)
sprites = pygame.sprite.Group()
self.player = Player(frames,sprites)
clock = pygame.time.Clock()
while 1:
clock.tick(30)
for event in pygame.event.get():
if event.type == pygame.QUIT:
return
if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:
return
screen.fill((200, 200, 200))
sprites.update()
sprites.draw(screen)
pygame.display.flip()
pygame.sprite.Group.sprites
if __name__ == '__main__':
pygame.init()
screen = pygame.display.set_mode((640, 480))
Game().main(screen)
当我设置self.frame时,我想问题就出现了。每次调用某个东西时,它都会将其设置为0,但我就是看不出是什么,也许你们可以帮忙
self.frame在此设置为0
self.frame=0
超级(玩家,自我)。init(*组)
这里还需要循环播放动画:
def update(self):
key = pygame.key.get_pressed()
if key[pygame.K_LEFT]:
self.rect.x -= 10
self.frame += 10
if key[pygame.K_RIGHT]:
self.rect.x += 10
self.frame += 1
if key[pygame.K_UP]:
self.rect.y -= 10
self.frame += 1
if key[pygame.K_DOWN]:
self.rect.y += 10
self.frame += 1
if self.frame > 3:
self.frame = 0
编辑:
sprite系统类
class sprite_system(object):
def slice_sheet(self,sprite_sheet,sprite_start_x,sprite_start_y,sprite_size_x,sprite_size_y,sheet_frames):
frame = []
sheet_start = 1
frame_pos = 0
sprite_start_x_base = sprite_size_x
while sheet_start <= sheet_frames:
sheet = sprite_sheet
sheet.set_clip(pygame.Rect(sprite_start_x,sprite_start_y,sprite_size_x,sprite_size_y))
sprite_clip = sheet.subsurface(sheet.get_clip())
frame.append(sprite_clip)
sprite_start_x += sprite_start_x_base
sheet_start += 1
return frame
类精灵_系统(对象):
def切片工作表(自我、精灵工作表、精灵开始工作表、精灵开始工作表、精灵大小工作表、精灵框架):
帧=[]
工作表\u开始=1
框架位置=0
精灵\u开始\u x\u基础=精灵\u大小\u x
当工作表开始时
- 您没有将精灵放置在sprite.Group中
- 哪里是sprite\u system().slice\u sheet()
pygame.sprite.Group.sprites
我可以修复它,但是如果sprite\u system().slice\u sheet()是我编辑的另一个类,如果您想查看它,请参见
pygame.sprite.Group.sprites