pymunk - 是否有标准方法来为对象设置自定义重力?
pymunk - Is there a standard way to set custom gravity for an object?
pymunk 文档写了一个场景的重力 "Defaults to (0,0). Can be overridden on a per body basis by writing custom integration functions."你会如何编写自定义集成函数来改变一个物体的重力(例如,如果我在梯子上有一个物体,我希望它的重力为 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
pymunk 文档写了一个场景的重力 "Defaults to (0,0). Can be overridden on a per body basis by writing custom integration functions."你会如何编写自定义集成函数来改变一个物体的重力(例如,如果我在梯子上有一个物体,我希望它的重力为 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