pymunk - 使用 pygame_util 缩放图形
问题描述
我正在用 pymunk 构建模型,我需要使用真实尺寸(模型的物理尺寸约为 1 米)。有没有办法在 pygame_util 中缩放图形,使 1 米对应 800 像素?
解决方案
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到屏幕上。我认为这个选项不如第一个选项好,因为可能存在缩放工件,但根据您的确切用例,它可能会起作用。
推荐阅读
- c - 如何声明指向char *数组的指针数组
- python - 如何重定向到上一页?或如何从 ForeignKey 获取标题?
- android - 将颜色更改为设置组之间的分隔线
- php - PHP SESSION 登录不同用户类型的错误。我正在尝试根据用户类型更改向用户显示的标题。if else 有问题
- php - 如何在 MacOS 上将 PHP 编译为静态二进制文件?
- c# - 将多个 DotNet 可执行文件合并为一个可执行文件
- html - 变换比例在Firefox中产生不同的结果
- ios - 无法删除关键路径“Bounds”的观察者,因为它没有注册为观察者
- c - 如何像素化二进制 (P6) PPM 文件
- javascript - 如何在不向 JSX 树中添加组件的情况下创建 React 组件