Вопрос физики JME-Jbullet - PullRequest
       19

Вопрос физики JME-Jbullet

2 голосов
/ 14 марта 2010

В настоящее время я играю с физическим движком JME-Jbullet и у меня проблемы с местностью.

У меня есть две плоские коробки, одна для пола, а другая - в качестве рампы. Вопрос в следующем:

Со следующим кодом:

Box slope = new Box("Slope", new Vector3f(0, -1, 0), 10f, 0f, 15f);
PhysicsNode pSlope = new PhysicsNode(slope, CollisionShape.ShapeTypes.MESH);
pSlope.setMass(0);
pSlope.getLocalRotation().fromAngleNormalAxis( 0.5f, new Vector3f( 0, 0, -1 ) );

До применения поворота коробка работает как обычно, если другой объект падает сверху, то они сталкиваются правильно. Однако после вращения коробка поворачивается, но ее «физика» не меняется, поэтому, когда объект падает на то, что кажется рампой, он действует так, как будто вращения никогда не было.

Есть ли способ обновить рампу, чтобы при падении на нее предмета скользил вниз?

Спасибо.

Ответы [ 3 ]

1 голос
/ 15 марта 2010

вы не забыли обновить мир физики вашим update методом?

public void update(float tpf) {
    super.update(tpf);
    pSpace.update(tpf);
}

где pSpace взято PhysicsSpace pSpace=PhysicsSpace.getPhysicsSpace();

0 голосов
/ 07 декабря 2011

Как указано в javadocs :

getLocalTranslation (). Set () не устанавливает местоположение физического объекта, использует setLocalTranslation (), то же относится и к getLocalRotation ()

Я бы предположил, что вам нужно будет вызвать pSlope.setLocalRotation(...) вместо того, чтобы получить вращение и изменить его на месте.

0 голосов
/ 25 июля 2010

Проблема в форме столкновения. Сетка является чрезвычайно дорогой формой для расчета коллизий, и, насколько я знаю, она не работает должным образом (пока) в JME. Замена его на форму столкновения коробки решит вашу проблему.

...