python动画精灵_python-Pygame:精灵动画理论-需要反馈

在对一些代码进行了一些调整之后,我从某人那里得到了一个使字符图像沿其方向移动的信息,并且上下左右输入我将它们放在一起:(希望代码不太混乱)

Sprite工作表仅沿长度方向运行,因此基本上每个Sprite部分都是不同的动作.现在是否有一种方法可以使我的代码与当前代码一起工作,以从一组“动作”中循环下来以制作动画?

例如:

“左转”是精灵3.因此,在指定该列之后,可以循环播放多少帧动画(让我们说4个)以制作动画?

解决方法:

应该很容易.

如果您将帧号记录在变量中,则可以用要获得要显示的动画帧号的帧数取模.

frame_count = 0

animation_frames = 4

while quit == False:

# ...

# snip

# ...

area = pygame.Rect(

image_number * 100,

(frame_count % animation_frames) * 150,

100,

150

)

display.blit(sprite, sprite_pos, area)

pygame.display.flip()

frame_count += 1

如果不同的动作具有不同的帧数,则在更新image_number时必须更新animation_frames.

同样,这假定可以从任何帧开始播放动画.如果不是这种情况,则需要记录操作开始时的帧数,并在进行模运算之前将其从帧数中删除:

area = pygame.Rect(

image_number * 100,

((frame_count - action_start_frame) % animation_frames) * 150,

100,

150

)

关于事件处理的注释.如果按住(例如向左),然后向右轻按,但继续向左按住,则精灵将停止移动,因为您处理的最后一个事件是按键事件,尽管我仍然向左按住.

如果这不是您想要的,可以通过记录感兴趣的键的上/下状态或使用pygame.key.get_pressed界面来解决.

另一个要注意的是,您似乎希望获得固定的帧速率,并同时根据上一帧所花费的时间来确定将精灵移动多远.我认为这可能不理想.

2D动作游戏通常需要以可预测的方式工作.如果某些CPU繁重的进程在计算机的后台启动,导致游戏不再能够每秒处理60帧,则最好放慢速度,而不是让对象开始跳过帧之间的较大距离.试想一下,如果这发生在诸如《合金弹头》这样的2D动作游戏中,而您则不得不四处躲避子弹?

这也使任何物理计算都更加简单.您必须根据游戏的类型做出判断.

标签:2d,pygame,sprite,python

来源: https://codeday.me/bug/20191107/2004107.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值