首页 > 解决方案 > 使用 pygame_util 缩放图形

问题描述

我正在用 pymunk 构建模型,我需要使用真实尺寸(模型的物理尺寸约为 1 米)。有没有办法在 pygame_util 中缩放图形,使 1 米对应 800 像素?

标签: pymunk

解决方案


Pymunk 本身是无单位的,如下所述:http: //www.pymunk.org/en/latest/overview.html#mass-weight-and-units

Pymunk 6.1(及更高版本)

使用 Pymunk 6.1,现在可以在 SpaceDebugDrawOptions 对象(或特定于库的实现之一,如 pygame_utils.DebugDraw 之一)上设置转换,如此处所述http://www.pymunk.org/en/latest/pymunk.html# pymunk.SpaceDebugDrawOptions.transform 有了这个新功能,应该可以设置缩放变换来实现您所要求的。

Pymunk 6.0(及更早版本)

当与 pygame_util 一起使用时,距离将以像素为单位进行测量,例如,10x20 的盒子形状 ( create_box(size=(10,20))) 将被绘制为 10x20 像素的矩形。这意味着实现您所询问的最简单的方法是定义 Pymunk 长度单位为 0.125 厘米,因此盒子形状高于 1.25 厘米 x 2.5 厘米。

另一种方法是在完成后缩放表面。因此,不要使用屏幕表面,pymunk.pygame_util.DrawOptions()而是使用在绘制空间时缩放的自定义表面,然后将结果blit到屏幕上。我认为这个选项不如第一个选项好,因为可能存在缩放工件,但根据您的确切用例,它可能会起作用。


推荐阅读