Комментарии: libGDX: Часть 6. Работа с Box2D/2012/12/22/2764/libgdx-chast-6-rabota-s-box2d/Блог о разработке игр и серверных технологияхSun, 16 Feb 2020 03:56:16 +0000hourly1https://wordpress.org/?v=5.1.19Автор: Евгений Кузьмин/2012/12/22/2764/libgdx-chast-6-rabota-s-box2d/#comment-12441Fri, 13 Jan 2017 15:43:00 +0000/?p=2764#comment-12441А BodyDef def = new BodyDef();
def.type = BodyType.DynamicBody;
Body boxP = world.createBody(def); почему в стеке (в локальной области видимочти) объявлены и определены? В createWorld? Они копируются в класс player по видимому и уничтожаются при выходе из области видимости для того чтобы куча не больно тормозила?

]]>
Автор: Dmitry/2012/12/22/2764/libgdx-chast-6-rabota-s-box2d/#comment-12372Thu, 18 Jun 2015 13:09:00 +0000/?p=2764#comment-12372Как я понимаю, угол поворота телу напрямую задать нельзя? Делал машинку с видом сверху, управляемую со стрелок клавиатуры, простые тригонометрические формулы, спрайт вполне себе ездит, а вот с телом сложности. Передать угол от спрайта к телу не получается, только наоборот.
А через силы и угловую скорость как-то не очень понятно, как это адекватно сделать.

]]>
Автор: Sergey/2012/12/22/2764/libgdx-chast-6-rabota-s-box2d/#comment-12346Wed, 12 Nov 2014 22:32:30 +0000/?p=2764#comment-12346Как убрать круг и квадрат которые выводятся вместе с актером?? или сделать их не видимыми??

]]>
Автор: Игорь/2012/12/22/2764/libgdx-chast-6-rabota-s-box2d/#comment-12292Tue, 19 Aug 2014 09:38:04 +0000/?p=2764#comment-12292цитата «А про второе…в обработчике прыжка задавать вектор, с учётом уже имеющегося импульса.»
Вы имеете ввиду Body.setLinearVelocity(0, 5f-x*Body.getLinearVelocity().y);или так applyLinearImpulse(new Vector2(0,3.85f), Body.getPosition());? У меня игрок на колесах, и с места он прыгает ниже чем с разгона, и когда подвеска сжимается в момент импульса, он ниже подскакивает, а когда наоборот — выше. Если я правильно понимаю нужно отнять/прибавить не достающий/избыточный импульс при столкновение, для этого нужно где то получить величину этого импульса по вертикальной оси. Как учитывать скорость имеющегося импульса, с помощью метода Body.getLinearVelocity().y, а потом корректировать с помощью Body.setLinearVelocity(0, x);? Или как то по другому?

]]>
Автор: Suvitruf/2012/12/22/2764/libgdx-chast-6-rabota-s-box2d/#comment-12291Tue, 19 Aug 2014 06:38:25 +0000/?p=2764#comment-12291setBullet(true) указывает, чтоб для объекта более точные вычисления применялись.

А про второе…в обработчике прыжка задавать вектор, с учётом уже имеющегося импульса.

]]>
Автор: Игорь/2012/12/22/2764/libgdx-chast-6-rabota-s-box2d/#comment-12290Tue, 19 Aug 2014 05:01:34 +0000/?p=2764#comment-12290Спасибо. Не могу понять, что изменяет метод setBullet(true), который рассматривает тело при столкновение как пулю. Вроде не чего не меняется. Кстати метод Сontact.isTouching() не всегда корректно работает, на пересечение объектов или частей сложного объекта не фиксирует контакт, лучше использовать интерфейс ContactListener, он все фиксирует.
Не плохой метод applyLinearImpulse(float impulseX, float impulseY, float pointX, float pointY), но если ваш игрок соединяет внутри себя разные объекты с помощью разных соединений (например DistanceJointDef с амортизацией DistanceJointDef.frequencyHz типа пружины и без), то игрок подпрыгивает на разную высоту, так как к импульсу прибавляется сила отталкивания соединения (DistanceJointDef). Как вы думаете, как в таком случае лучше реализовать прыжок на одинаковую высоту?

]]>
Автор: YuryKlmchuk/2012/12/22/2764/libgdx-chast-6-rabota-s-box2d/#comment-12207Mon, 24 Mar 2014 10:47:14 +0000/?p=2764#comment-12207Не могу понять следующие: вот например есть body
this.bodyDef = new BodyDef();
this.bodyDef.type = BodyType.DynamicBody;
this.bodyDef.position.set(this.getX()/100, this.getY()/100);
this.boxBody = this.gameWorld.createBody(this.bodyDef);
this.shape = new PolygonShape();
this.shape.setAsBox(0.5f, 0.5f);
this.fixtureDef = new FixtureDef();
this.fixtureDef.shape = this.shape;
this.boxBody.createFixture(fixtureDef);

Координаты этого body находиться в центре квадрата, или в нижнем левом углу???

]]>
Автор: Suvitruf/2012/12/22/2764/libgdx-chast-6-rabota-s-box2d/#comment-12203Wed, 19 Mar 2014 21:09:57 +0000/?p=2764#comment-12203Я думал, что так наоборот проще О_о

]]>
Автор: Vetl/2012/12/22/2764/libgdx-chast-6-rabota-s-box2d/#comment-12201Wed, 19 Mar 2014 17:30:21 +0000/?p=2764#comment-12201На этапе обучения тяжело так делать. Подскажите способ попроще?

]]>
Автор: Suvitruf/2012/12/22/2764/libgdx-chast-6-rabota-s-box2d/#comment-12200Wed, 19 Mar 2014 14:59:39 +0000/?p=2764#comment-12200Я обычно отдельно отрисовывываю, беря данные о координатах из объектов Box2D.

]]>