Pygame 缩放/滚动窗口
我目前正在做一个pygame的项目,需要能够查看一个表面的一部分,并且可以移动、放大和缩小等。
有没有人能推荐一个有效的方法来实现这个功能?我现在的方法有点复杂,速度太慢,缩小到查看整个区域时,游戏的帧率降到了大约1帧每秒。(我只做滚动而不缩放的版本运行得很好,没有卡顿。)
我查看了一下文档,发现pygame.transform.scroll看起来很有希望,但我不太确定如何将它和pygame.transform.scale结合起来,以便实现放大和缩小。
任何帮助都很欢迎。
更新:我试了一下,成功地在绘制对象之前调整了它们的大小和位置。不过现在遇到了一个问题,因为pygame的滚轮事件分辨率较低,缩放效果看起来不自然,所以我现在在尝试实现某种平滑效果。
3 个回答
0
我有一个从来没完成的游戏,里面我用到了三角函数来计算在一个可以自由缩放和旋转的摄像头下,新的绘图位置(这有点复杂)。其实计算起来并没有花太多时间,但我觉得用其他库会更高效。如果你想要一些例子,随时问我。
0
你可以把pygame和OpenGL一起使用,因为你已经对pygame很熟悉了。如果不想用pygame,pyglet也是一个类似的OpenGL库。
1
我不太确定你具体在做什么。不过我可以说,你的做法听起来不太适合Pygame。
听起来你是在依赖软件缩放算法,而Pygame正是使用这种方法来把一个大图片(整个游戏世界)缩小到更小的尺寸。对于大图像来说,每一帧都这样处理,会让你的CPU负担很重。
如果缩放真的很重要,我建议你换一个支持硬件加速缩放的库,比如pyglet。毕竟,在没有GPU的时代,游戏几乎从来不会缩放。