首页 > 解决方案 > 从 pymunk 到现实世界的单位

问题描述

我有两个问题。

  1. 如何将 pymunk 旋转转换为真实世界的弧度/秒。
  2. 如何根据移动像素/秒确定下落质量的 x 和 y 速度

它与 space.step() 或每秒帧数有什么关系吗?

标签: pygamephysicspymunk

解决方案


Pymunk 在文档中使用的单位有一个简短的解释:http: //www.pymunk.org/en/latest/overview.html#mass-weight-and-units

通常,Pymunk 不知道或关心您使用什么单位,当您对模拟进行建模以使用有意义的单位时,这取决于您。您从 Pymunk 读出的值将使用您输入的任何值的单位(或派生单位)。

例如:

在您的代码中space.step(0.01),Pymunk 不知道这是否意味着 0.01 秒或 0.01 小时或其他什么。在职位方面也是如此。你body.position = 400,400知道,但 Pymunk 不知道给定的位置是像素、米还是其他单位。这意味着如果您决定使用 Pymunk 的时间单位是秒,距离单位是像素,那么您可以获得的速度body.velocity将是像素/秒 ( [unit of distance]/[unit of time])。

鉴于以上body.angular_velocity将是 1 弧度/秒,并且body.velocity将以像素/秒返回。但是请注意,您在屏幕上看到的内容不会完全匹配,因为您将 0.01 设置为dtspace.step(dt)但您的绘图循环不一定每秒运行 100 次(通常使用 PygameClock.tick(..)方法来限制循环)


推荐阅读