我目前正在使用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 ) );在应用旋转之前,长方体的行为与正常一样,如果将另一个对象放在顶部,则它们会正确碰撞。然而在旋转之后,长方体被旋转了,但是它的“物理”没有改变,所以当一个物体被放在看起来像是坡道的顶部时,它的行为就像旋转从来没有发生过一样。
有没有办法更新坡道,这样当一个物体落在上面时,它就会滑下来?
谢谢。
发布于 2010-03-15 06:34:12
您还记得在update方法中更新物理世界吗?
public void update(float tpf) {
super.update(tpf);
pSpace.update(tpf);
}pSpace来自PhysicsSpace pSpace=PhysicsSpace.getPhysicsSpace();的地方
发布于 2010-07-25 04:36:02
问题出在碰撞形状上。网格是一个非常昂贵的形状来计算碰撞,据我所知,在JME中不能正常工作(到目前为止)。将其替换为长方体碰撞形状将解决您的问题。
发布于 2011-12-08 01:06:31
如javadocs中所示
getLocalTranslation().set()不设置物理对象的位置,使用setLocalTranslation(),同样适用于getLocalRotation()
我猜想你需要调用pSlope.setLocalRotation(...),而不是在适当的地方获得旋转并修改它。
https://stackoverflow.com/questions/2443219
复制相似问题