2010-03-14 21 views
2

我目前在玩JME-Jbullet物理引擎,並且遇到了我的地形問題。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)); 

應用循環之前,盒子作爲正常的,如果另一個目的是在頂部下跌,那麼他們正確地碰撞。然而,在旋轉之後,盒子被旋轉,但其「物理」不會改變,所以當一個物體落在似乎是斜坡的頂部時,它就好像旋轉從未發生過一樣。

有沒有更新斜坡的方法,這樣當一個物體落到它上面時,它會滑落?

謝謝。

回答

1

你記得在你的update方法中更新物理世界嗎?

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

其中pSpace來自PhysicsSpace pSpace=PhysicsSpace.getPhysicsSpace();

0

的問題是在碰撞的形狀。網格是計算碰撞的非常昂貴的形狀,並且據我所知在JME中工作不正常。用箱子碰撞形狀代替它可以解決你的問題。

0

正如javadocs表示:

getLocalTranslation()集()不設置物理對象的位置,使用setLocalTranslation(),同樣也適用於getLocalRotation()

我會從這個猜測,你將需要撥打pSlope.setLocalRotation(...),而不是得到旋轉和修改它的地方。