首页 > 解决方案 > pymunk - 是否有标准的方法来设置对象的自定义重力?

问题描述

pymunk 文档将场景的重力写入“默认为 (0,0)。可以通过编写自定义集成函数在每个身体的基础上覆盖。” 您将如何编写自定义集成函数来更改对象的重力(例如,如果我在梯子上有一个对象,我希望它的重力为 0,否则我希望该场景的重力存在)?如果它有所作为,我仍然在 python 2 上。

标签: pythonpymunk

解决方案


您可以通过编写自己的速度函数并将其设置在您想要自定义重力的对象的主体上来做到这一点。

>>> 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


推荐阅读