pygame - 从 pymunk 到现实世界的单位
问题描述
我有两个问题。
- 如何将 pymunk 旋转转换为真实世界的弧度/秒。
- 如何根据移动像素/秒确定下落质量的 x 和 y 速度
它与 space.step() 或每秒帧数有什么关系吗?
解决方案
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 设置为dt
,space.step(dt)
但您的绘图循环不一定每秒运行 100 次(通常使用 PygameClock.tick(..)
方法来限制循环)
推荐阅读
- python - How to install TA-Lib On vscode/windows(64bit)
- blazor - Blazor:如何存储页面状态(所有组件状态)?
- javascript - 我可以在解析数据之前等待状态吗?
- reactjs - 如何从数组中删除一个项目(以及它旁边的“删除”按钮)?反应
- git - svn 到具有历史记录的分支的 git 迁移
- javascript - 警告:无法在尚未安装的组件上调用 setState。这是一个无操作,但它可能表明您的应用程序中存在错误
- java - FixedCredentialsProvider 在调用 Google Cloud 服务时给出未经授权的异常
- javascript - 防止双重发布客户端
- .net - 删除文件时小升级失败
- c# - Azure devops 未运行 MS 测试单元测试