Pygame 滚动背景延迟
在pygame中,我想要一个可以滚动的背景,这样玩家就可以在一个大区域内移动。我已经比较简单地实现了这个功能,但游戏运行得非常慢。
这是我一些代码的链接:http://pastebin.com/1EzDV7mc
我哪里做得不够好呢?我该怎么让它运行得更快呢?
2 个回答
接着junichiro说的,我找到一个网站,里面有他提到的信息,还有更多内容。
https://www.pygame.org/docs/tut/newbieguide.html
我不是说你是新手,其实我自己也从这个网站学到了很多,尽管我已经用pygame六年了。
另外,surface.convert()只适用于不透明的图片。要处理透明图片,应该用surface.convert_alpha(),这样就能处理所有类型的图片。我通常会写一个函数,这样每次加载图片的时候就不用重复输入一大堆代码。你可以用下面这两行代码:
def loadify(imgname):
return pygame.image.load(imgname).convert_alpha()
这样我的游戏帧数从18提升到了30帧。
祝你好运!
请查看 PyGame新手指南
特别是:
使用 surface.convert() 方法。
最好使用“脏矩形”动画,只更新那些发生变化的屏幕部分,而不是整个屏幕。虽然我之前也用过全屏更新(这在整个屏幕不断滚动的游戏中是必须的),但在现代电脑上,只要对象不太多,其实也还不错。
在那个指南中没有提到的内容:
你应该争取达到每秒60帧(60fps),可以用 clock.tick(60) 来控制,但其实30帧也可以,CPU的负担会小一些。
如果你需要进行全屏更新来实现滚动效果,那就要么少用一些对象,要么不再使用PyGame,转而使用OpenGL。
你为什么用图像的中心点来绘制,而不是左上角?这是个错误吗?
通常情况下,存储大小属性时,应该分开存储宽度和高度,而不是用一个需要索引的列表。这样可以让你的代码更清晰。