我目前正在使用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 ) );
在应用旋转之前,该框表示正常,如果另一个对象掉在顶部,则它们会正确碰撞。然而,在旋转之后,盒子被旋转,但是它的“物理”不会改变,所以当一个物体掉落在似乎是斜坡的顶部时,就好像旋转从未发生过一样。
有没有办法更新渐变,以便当一个物体掉落到它上面时,它会向下滑动?
感谢。
答案 0 :(得分:1)
你还记得用update
方法更新物理世界吗?
public void update(float tpf) {
super.update(tpf);
pSpace.update(tpf);
}
其中pSpace
来自PhysicsSpace pSpace=PhysicsSpace.getPhysicsSpace();
答案 1 :(得分:0)
答案 2 :(得分:0)
如javadocs:
所示getLocalTranslation()。set()不设置物理对象位置,使用setLocalTranslation(),同样适用于getLocalRotation()
我猜想你需要调用pSlope.setLocalRotation(...)
而不是获得轮换并将其修改到位。