Я создаю свое собственное приложение для игр с использованием Box2D, и у меня возникли некоторые проблемы. Мне удалось отобразить все те тела, которые я хотел, переместив их, но я должен уделить большое значение правильному их перемещению. Например вот мое определение тела игрока:Значения линейного импульса
bodyDefPlayer = new BodyDef();
bodyDefPlayer.type = BodyType.DynamicBody;
bodyDefPlayer.position.set(positionX, (positionY * tileHeight) + 50);
playerBody = world.createBody(bodyDefPlayer);
polygonPlayer = new PolygonShape();
polygonPlayer.setAsBox(50, 50);
fixturePlayer = new FixtureDef();
fixturePlayer.shape = polygonPlayer;
fixturePlayer.density = 0.8f;
fixturePlayer.friction = 0.5f;
fixturePlayer.restitution = 0.0f;
playerBody.createFixture(fixturePlayer);
playerBody.setFixedRotation(true);
А вот как я должен применить свой импульс, чтобы переместить его:
Vector2 vel = this.player.playerBody.getLinearVelocity();
Vector2 pos = this.player.playerBody.getWorldCenter();
player.playerBody.applyLinearImpulse(new Vector2(vel.x + 20000000, vel.y * 1000000), pos, true);
Как вы можете видеть мои ценности довольно высоки плюс игрок ISN '' делая кривую, когда он идет вниз, но больше идет прямо вниз, когда он может.
Я хотел бы иметь некоторую помощь, пожалуйста :)
Спасибо!
Привет, я просто попробовал то, что вы мне ответили. Поскольку это (я думаю), C++ я не могу его использовать. У меня возникли вопросы. Во-первых, у вас есть Vector2, который должен иметь 2 значения, и у вас есть только одна (первая строка). Во-вторых, что должно делать toTarget.Normalize()? После этого я понял, я попытался использовать ApplicationForceToCenter и, похоже, отлично работает, поэтому спасибо за советы :) – Kamigaku
@ user2919009 Vec2 = b2Vec2 в box2d. Я конвертирую код. У меня просто есть typedef. Похоже, вы используете java (возможно, libgdx?). Код полностью применим ... вам просто нужно сделать небольшое преобразование для -> в "." оператор, я считаю. – FuzzyBunnySlippers
Что должно делать toTarget.Normalize()? Редактировать: я только что проверил в сети, Vector2 в JAVA не имеет функции нормализации, я буду подробно проверять, что она делает, или я просто пропущу ее. – Kamigaku