В документации pymunk написано, что гравитация для сцены «по умолчанию равна (0,0). Может быть переопределена для каждого тела путем написания пользовательских функций интеграции». Как бы вы написали пользовательские функции интеграции для изменения гравитации объекта (например, если у меня есть объект на лестнице, я хочу, чтобы его гравитация была равна 0, но в противном случае я хочу, чтобы гравитация для этой сцены существовала)? Если это имеет значение, я все еще на Python 2.
pymunk - Есть ли стандартный способ установить пользовательскую гравитацию для объекта?
Ответы (1)
Вы можете сделать это, написав свою собственную функцию скорости и установив ее на теле объекта, для которого вы хотите настроить гравитацию.
>>> 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
person
viblo
schedule
28.01.2020