python - Pygame: Sprite 因运动方向而变化

标签 python 2d pygame sprite

我昨天刚刚开始学习如何使用 pygame。我读过这本书,它非常有帮助,并且遵循了它的所有教程、示例和内容。我想尝试制作一个非常简单的横向卷轴/平台游戏,但是这本书很快就进入了 3D 建模,而没有指导如何制作上下左右移动的变化 Sprite 以及如何循环播放动画图像。

我今天花了一整天的时间试图让一个 Sprite 显示出来并且能够上下左右移动。但由于脚本简单,它使用静态图像并且拒绝更改。

谁能给我一些关于如何更改 Sprite 的知识。或者给我发送一个教程?

每个引用文献和尝试它的人一直在使用生成的形状,所以我永远无法使用它们。

非常感谢任何帮助。

补充:在弄清楚如何在我的场景中放置复杂的动画之前,我想知道如何使我的“播放器”在我按下左上或右下时变为静止图像。如果人们知道它确实很复杂的话,也许是对角线。

添加:这是我到目前为止整理的内容。 http://animania1.ca/ShowFriends/dev/dirmove.rar是否有可能使方向/ Action 设置 Action 的列,并让小列设置代码也使其循环向下循环以执行动画? (或者这会严重浪费效率吗?)

最佳答案

这是一个愚蠢的示例,当您按向左/向右时,它会在 Sprite 表的前两个图像之间进行交替:

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 次。

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

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

关于python - Pygame: Sprite 因运动方向而变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/733916/

相关文章:

python - Python中不带[]的列表理解

python 模拟 : Unexpected result with patch and return_value

python - 无法在 Ubuntu Python 2.7 中导入 GTK

python - 复制迭代器中的每个成员

python - 创建均匀随机四元数和两个四元数的乘法

c++ - 计算二维数组的平均值、最小值、最大值

Python 二维数组无法工作。帮忙~

python - 无法获取按钮来切换 pygame 中的更改

python - 类型错误 : argument 1 must be pygame. 表面,而不是 pygame.Rect

python - 如何在 python-pygame 中添加背景图像