pymunk - есть ли стандартный способ установить собственную гравитацию для объекта? - PullRequest
1 голос
/ 27 января 2020

В документации pymunk написано, что гравитация для сцены "По умолчанию (0,0). Может быть переопределена для каждого тела путем написания пользовательских функций интеграции." Как бы вы написали пользовательские функции интеграции, чтобы изменить гравитацию для объекта (например, если у меня есть объект на лестнице, я хочу, чтобы его гравитация была равна 0, но в противном случае я хочу, чтобы гравитация существовала в этой сцене)? Если это имеет значение, я все еще на python 2.

1 Ответ

0 голосов
/ 28 января 2020

Вы можете сделать это, написав свою собственную функцию скорости и установив ее на теле объекта, для которого вы хотите настроить гравитацию.

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

...