【发布时间】:2016-02-20 20:16:37
【问题描述】:
在我的 LibGDX 项目中,我将 Box2D 用于物理。当我尝试制作两个没有摩擦的物体时(0.0f),当它们相互移动时看起来它们仍然有摩擦。一个是静态的,旋转了 45 度,另一个是动态的。我错过了什么?
这个世界的重力为 9.8 m/s,每米像素 (PPM) 为 32。我想要的是两个物体完全没有摩擦。在我的示例代码中,第二个主体落在第一个主体上。当物体没有摩擦时,我期望发生的是第二个物体滑落。但发生的情况是,第二个对象反而停止并沿着第一个对象“拖动”。
代码如下:
Body b1, b2;
BodyDef def1 = new BodyDef();
PolygonShape shape1 = new PolygonShape();
FixtureDef fDef1 = new FixtureDef();
def1.type = BodyType.StaticBody;
b1 = world.createBody(def1);
shape1.setAsBox(64 / 2 / PPM, 32 / 2 / PPM);
b1.setTransform(20 / PPM, 0, (float)Math.toRadians(60.0));
fDef1.shape = shape1;
fDef1.friction = 0.0f;
fDef1.density = 1.0f;
b1.createFixture(fDef1);
shape1.dispose();
BodyDef def2 = new BodyDef();
PolygonShape shape2 = new PolygonShape();
FixtureDef fDef2 = new FixtureDef();
def2.type = BodyType.DynamicBody;
b2 = world.createBody(def2);
shape1.setAsBox(32 / 2 / PPM, 32 / 2 / PPM);
b2.setTransform(0, 100 / PPM, (float)Math.toRadians(60.0));
fDef2.shape = shape2;
fDef2.friction = 0.0f;
fDef2.density = 1.0f;
b2.createFixture(fDef2);
shape2.dispose();
【问题讨论】: