2015-10-16 60 views
0

我创建了Body无法与地面精确对撞的对象。它们之间有奇怪的点(。)。libGDX Box2DDebugRenderer中的奇怪点

这里的知情同意: enter image description here ​​

这里我的脚本来创建Body对象:

BodyDef bodyDef = new BodyDef(); 
bodyDef.position.set(Static.toMeter(128), Static.toMeter(128)); 
bodyDef.type = BodyDef.BodyType.DynamicBody; 
body = world.createBody(bodyDef); 

// Define mario shape 
PolygonShape shape = new PolygonShape(); 
shape.setAsBox(Static.toMeter(32)/2, Static.toMeter(32)/2); 

FixtureDef fixture = new FixtureDef(); 
fixture.shape = shape; 

body.createFixture(fixture); 
body.setUserData(this); 

为什么出现这种情况?

我制造了什么问题吗?

我在网上查了一些例子,没有显示点。

UPDATE:

public static final int WIDTH = 800; 
public static final int HEIGHT = 600; 
public static final float PIXEL_TO_METER = 1/300f; 
public static final float METER_TO_PIXEL = 300; 
+0

只是最后一次说:点是在那里,因为它是与另一个身体接触!改变分辨率只会使点更难看,但它仍然存在。检查你似乎使用的马里奥游戏,如果你放大马里奥你看到的点。如果您不想看到它们,请禁用box2d调试渲染器中的绘图联系人! –

回答

0

默认情况下,Box2D的调试渲染器渲染一切Box2D的,这意味着它呈现固定装置,接头等,看构造函数:

new Box2DDebugRenderer(drawBodies, drawJoints, drawAABBs, drawInactiveBodies, drawVelocities, drawContacts); 

这个小圆点是联系。

-1

基本上我只是设置转换为大。 300像素= 1米。

当我改变它下100像素= 1米。它工作正常。所以,我改变了这个:

public static final float PIXEL_TO_METER = 1/64f; 
public static final float METER_TO_PIXEL = 64; 
+0

但点仍然存在,它不是那么突出。因为它是联系人。人们可以很容易地验证,通过移动身体,每次触及某些东西时都会看到点。否则,最好不要使用像素作为box2d单位。 –