首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JME-Jbullet物理问题

JME-Jbullet物理问题
EN

Stack Overflow用户
提问于 2010-03-15 02:29:40
回答 3查看 780关注 0票数 2

我目前正在使用JME-Jbullet物理引擎,并且我的地形有问题。

我有两个扁平的盒子,一个用来放地板,另一个用来做坡道。问题如下:

使用以下代码:

代码语言:javascript
复制
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 ) );

在应用旋转之前,长方体的行为与正常一样,如果将另一个对象放在顶部,则它们会正确碰撞。然而在旋转之后,长方体被旋转了,但是它的“物理”没有改变,所以当一个物体被放在看起来像是坡道的顶部时,它的行为就像旋转从来没有发生过一样。

有没有办法更新坡道,这样当一个物体落在上面时,它就会滑下来?

谢谢。

EN

回答 3

Stack Overflow用户

发布于 2010-03-15 06:34:12

您还记得在update方法中更新物理世界吗?

代码语言:javascript
复制
public void update(float tpf) {
    super.update(tpf);
    pSpace.update(tpf);
}

pSpace来自PhysicsSpace pSpace=PhysicsSpace.getPhysicsSpace();的地方

票数 1
EN

Stack Overflow用户

发布于 2010-07-25 04:36:02

问题出在碰撞形状上。网格是一个非常昂贵的形状来计算碰撞,据我所知,在JME中不能正常工作(到目前为止)。将其替换为长方体碰撞形状将解决您的问题。

票数 0
EN

Stack Overflow用户

发布于 2011-12-08 01:06:31

javadocs中所示

getLocalTranslation().set()不设置物理对象的位置,使用setLocalTranslation(),同样适用于getLocalRotation()

我猜想你需要调用pSlope.setLocalRotation(...),而不是在适当的地方获得旋转并修改它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2443219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档