我尝试将Box2D集成到我的WP7游戏中。但是,我添加的物体没有像预期的那样响应重力。基本上,似乎无论我修改什么属性,我添加的对象似乎仍然非常“轻”,并且实际上并没有响应重力变化。
以下是代码:
void Init
{
world = new World(new Vector2(0, 100), false);
world.ContinuousPhysics = true;
// add ground
BodyDef bd = new BodyDef();
Body ground = world.CreateBody(bd);
PolygonShape shape = new PolygonShape();
shape.SetAsEdge(new Vector2(0.0f, bbheight), new Vector2(bbwidth, bbheight));
ground.CreateFixture(shape, 0.0f);
AddObject(new Vector2(450,0));
}
private void AddObject(Vector2 position)
{
float PTM = 32;
Vector2 pos = new Vector2(position.X / PTM, position.Y / PTM);
var circle = new CircleShape();
circle._radius = 1.0f;
var fd = new FixtureDef();
fd.shape = circle;
fd.restitution = 0.5f;
fd.friction = 1.0f;
fd.density = 1000.0f;
BodyDef bd = new BodyDef();
bd.type = BodyType.Dynamic;
bd.fixedRotation = true;
bd.allowSleep = false;
bd.position = pos;
var body = world.CreateBody(bd);
body.CreateFixture(fd);
body.SetUserData(Red);
}
如果你能提供一些帮助,我将不胜感激。 谢谢!
答案 0 :(得分:0)
Box2D引擎是以像素为单位设计的,它只是小单位。
例如,如果您在制作时使用缩放1像素= 1单位,而对象是100像素宽则它是Box2D的大行星。因此,如果两个物体之间的距离为300,则需要永远克服
你要做的是改变Box2D设计的比例。
我建议你阅读或观看一些像这样的Box2D教程http://www.kerp.net/box2d/本教程适用于Flash Box2D版本,但主要区别是类名。