python - pymunk - 是否有标准的方法来设置对象的自定义重力?
问题描述
pymunk 文档将场景的重力写入“默认为 (0,0)。可以通过编写自定义集成函数在每个身体的基础上覆盖。” 您将如何编写自定义集成函数来更改对象的重力(例如,如果我在梯子上有一个对象,我希望它的重力为 0,否则我希望该场景的重力存在)?如果它有所作为,我仍然在 python 2 上。
解决方案
您可以通过编写自己的速度函数并将其设置在您想要自定义重力的对象的主体上来做到这一点。
>>> import pymunk
>>> space = pymunk.Space()
>>> space.gravity = 0, 10
>>> body = pymunk.Body(1,2)
>>> space.add(body)
>>> def zero_gravity(body, gravity, damping, dt):
... pymunk.Body.update_velocity(body, (0,0), damping, dt)
...
>>> body.velocity_func = zero_gravity
>>> space.step(1)
>>> space.step(1)
>>> print(body.position, body.velocity)
Vec2d(0.0, 0.0) Vec2d(0.0, 0.0)
速度函数记录在这里: http: //www.pymunk.org/en/latest/pymunk.html#pymunk.Body.velocity_func
推荐阅读
- php - 如何创建一个静态变量并从另一个类调用它?
- github-pages - 如何使用 github 页面中的 2 个降价文件创建简单的 2 页站点?
- angular - RXJS 6:新版本的 HttpInterceptor
- asp.net - 使用 textchanged 回发后保持 Tab 索引
- html - 将页面中的元素列表居中
- javascript - Vue.js 将方法从父级传递给子级
- forms - MS Access - 报告到 PDF - 数据字段未填充在 PDF 的控件中
- python-3.x - 如何在 Py3 中检索 argv ORIGINAL 字节数据?
- linux - Unix - 将 IP 字段更改为 csv 并输出新文件
- php - PHP 查询 - 进入流程