2

現在、JME-Jbullet 物理エンジンで遊んでいて、地形に問題があります。

床用とスロープ用の 2 つのフラット ボックスがあります。問題は次のとおりです。

次のコードを使用します。

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 ) );

回転が適用される前は、ボックスは通常どおりに機能し、別のオブジェクトが上にドロップされた場合、それらは正しく衝突します。ただし、回転後、ボックスは回転しますが、その「物理」は変化しないため、オブジェクトがランプのように見えるものの上にドロップされると、回転が発生しなかったかのように動作します。

オブジェクトがドロップされたときにランプが滑り落ちるようにランプを更新する方法はありますか?

ありがとう。

4

3 に答える 3

1

メソッドで物理世界を更新することを覚えていますupdateか?

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

どこpSpaceから来たのPhysicsSpace pSpace=PhysicsSpace.getPhysicsSpace();

于 2010-03-14T22:34:11.930 に答える
0

javadocsに示されているように:

getLocalTranslation().set() は物理オブジェクトの位置を設定しません。setLocalTranslation() を使用してください。getLocalRotation() にも同じことが当てはまります。

pSlope.setLocalRotation(...)そのことから、回転を取得して所定の位置に変更する代わりに、呼び出す必要があると思います。

于 2011-12-07T17:06:30.637 に答える
0

The problem is in the collision shape. A mesh is an extremely expensive shape to calculate collisions for, and as far as I am aware of not working properly (yet) in JME. Replacing it by a box collision shape will solve your problem.

于 2010-07-24T20:36:01.720 に答える