gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 06:19:59 27 4
gpt4 key购买 nike

我昨天刚刚开始学习如何使用 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com