Box2d.XNA重力问题

时间:2011-06-30 11:31:37

标签: windows-phone-7 xna windows-phone box2d

我尝试将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);
        }

如果你能提供一些帮助,我将不胜感激。 谢谢!

1 个答案:

答案 0 :(得分:0)

Box2D引擎是以像素为单位设计的,它只是小单位。 例如,如果您在制作时使用缩放1像素= 1单位,而对象是100像素宽则它是Box2D的大行星。因此,如果两个物体之间的距离为300,则需要永远克服 你要做的是改变Box2D设计的比例。
我建议你阅读或观看一些像这样的Box2D教程http://www.kerp.net/box2d/本教程适用于Flash Box2D版本,但主要区别是类名。