Доброго времени суток!
У меня есть класс
Box2DBullets, который представляет из себя
Rectangle определенного размера.
Его инициализация:
bdef.type = BodyDef.BodyType.DynamicBody;
bdef.position.set(x, y);
b2body = world.createBody(bdef);
shape.setAsBox(1 / MyGdxGame.PPM, 1 / MyGdxGame.PPM);
fdef.shape = shape;
bdef.bullet = true;
b2body.createFixture(fdef).setUserData("bullet");
И тут мне нужно сделать так, чтобы при повороте направо пуля летела в ту же сторону (и, соответственно, наоборот, если поворот был сделан налево).
Для этого я решил сделать своеобразный флажок. Т.е при обработке в хэндлерах, я определяю в какую сторону повернулся игрок и затем задаю
ArrayList-у с пулями тот же поворот. Но для того, чтобы при изменении направления игрока, пули, которые уже вылетели так же не меняли своего направления, я решил сделать флажок.
if (checkTurning == false) {
if (factingRight) b2body.applyLinearImpulse(new Vector2(velocity_x, 0), b2body.getWorldCenter(), true);
if (factingLeft) b2body.applyLinearImpulse(new Vector2(-velocity_x, 0), b2body.getWorldCenter(), true);
checkTurning = true;
}
Но этот способ не работает. Как я понял, импульс пулям необходимо задавать постоянно.
Поэтому нет ли еще какого-нибудь способа задать пули импульс только один раз, чтобы она летела постоянно в нужную сторону?