Пару дней боролся с этим, трудно найти примеры кода в сети.
Я делаю игру сверху вниз и не могу заставить игрока двигаться по нажатию клавиши. В данный момент я использую add_force
или add_impulse
, чтобы переместить игрока в направлении, но игрок не останавливается.
Я читал об использовании поверхностного трения между пространством и игроком для симуляции трения, и вот как это делается в демонстрационной версии tank.c .
Однако я недостаточно понимаю API для переноса этого кода с бурундука на pymunk.
cpConstraint *pivot = cpSpaceAddConstraint(space, cpPivotJointNew2(tankControlBody, tankBody, cpvzero, cpvzero));
Пока у меня есть нечто, похожее на это:
class Player(PhysicalObject):
BASE_SPEED = 5
VISIBLE_RANGE = 400
def __init__(self, image, position, world, movementType=None):
PhysicalObject.__init__(self, image, position, world)
self.mass = 100
self.CreateBody()
self.controlBody = pymunk.Body(pymunk.inf, pymunk.inf)
self.joint = pymunk.PivotJoint(self.body, self.controlBody, (0,0))
self.joint.max_force = 100
self.joint.bias_coef = 0
world.space.add(self.joint)
Я не знаю, как добавить ограничение пространства / игрока в пространство.
(Нужен кто-то с 1500+ повторениями для создания тега пимунка для этого вопроса).