Pygame:雪碧因运动方向而改变

时间:2009-04-09 12:01:58

标签: python 2d pygame sprite

我刚开始学习如何使用pygame昨天。我读了这本书非常有帮助,并遵循了所有的教程和示例和内容。我想尝试制作一个非常简单的侧卷轴/平台游戏,但是这本书有点快速地进入3D建模,并指出如何制作更改的精灵以便左右上下移动以及如何循环制作动画图像。

我今天花了很多时间试图让精灵显示出来并能够向左和向下移动。但由于简单的脚本,它使用静态图像并拒绝改变。

任何人都可以给我一些关于如何改变精灵的知识。或者发送给我的教程吗?

每个参考和试验它的人都一直在使用生成的形状,所以我永远无法使用它们。

非常感谢任何帮助。

补充:在弄清楚如何在我的场景中放置复杂的动画之前,我想知道如何让我的“玩家”改变为关于向左或向右按​​下的不动图像。如果人们知道它的东西真的很复杂,也许是对角线。

补充:这是我到目前为止所做的。 http://animania1.ca/ShowFriends/dev/dirmove.rar是否有可能将方向/操作设置为操作的列并使小列设置代码也使其循环循环以执行动画? (或者那会非常遗漏效率吗?)

3 个答案:

答案 0 :(得分:1)

这是一个愚蠢的例子,当您向左/向右按下时,它会在精灵表的两个第一张图像之间进行调整:

import pygame

quit = False
pygame.init()
display = pygame.display.set_mode((640,480))
sprite_sheet = pygame.image.load('sprite.bmp').convert()

# by default, display the first sprite
image_number = 0

while quit == False:
    event = pygame.event.poll()
    no_more_events = True if event == pygame.NOEVENT else False

    # handle events (update game state)
    while no_more_events == False:
        if event.type == pygame.QUIT:
            quit = True
            break
        elif event.type == pygame.NOEVENT:
            no_more_events = True
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                image_number = 0
            elif event.key == pygame.K_RIGHT:
                image_number = 1

        event = pygame.event.poll()

    if quit == False:
        # redraw the screen
        display.fill(pygame.Color('white'))
        area = pygame.Rect(image_number * 100, 0, 100, 150)
        display.blit(sprite_sheet, (0,0), area)
        pygame.display.flip()

我之前从未真正使用过Pygame,所以也许这段代码不应该作为一个例子。我希望它能展示基础知识。

为了更完整,我应该等待一段时间才能更新,例如控制我每秒只更新60次。

编写一个可以简化工作的精灵类也很方便。您可以在构造函数中传递精灵框架的大小,并且您将拥有像update()draw()这样的方法,它们会自动执行选择下一帧,blrite精灵等工作。

Pygame似乎为此提供了一个基类:link text

答案 1 :(得分:1)

老兄,你唯一需要做的就是离开

导入pygame以及所需的所有其他内容 输入代码和东西..........然后 当谈到你做一个spri

class .your class nam here. (pygame.sprite.Sprite):
     def __init__(self):
          pygame.sprite.Sprite.init(self)
          self.image=pygame.image.load(your image and path)
          self.rect=self.image.get_rect()
          x=0
          y=0

          # any thing else is what you want like posistion and other variables

     def update(self):
          self.rect.move_ip((x,y))

就是这样!!!!但那不是结束。如果你这样做,你就会生成精灵 移动它你需要

答案 2 :(得分:0)

我对Pygame知之甚少,但我使用过SDL(Pygame所依据的)。

如果您使用Surface.blit()link text

您可以使用可选的area参数来选择要绘制的曲面的哪个部分。 因此,如果将属于动画一部分的所有图像放在单个文件中,则可以选择要绘制的图像。 它被称为“剪辑”。

我猜你会有一个游戏循环来更新游戏状态(必要时更改精灵的当前图像),然后使用状态绘制精灵。

相关问题