Box2d.XNA гравитационная проблема - PullRequest
0 голосов
/ 30 июня 2011

Я пытаюсь интегрировать 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 голосов
/ 08 августа 2011

Box2D Engine разработан в пикселях, но в единицах, и ему нравятся небольшие единицы.Например, если вы попробуете масштабировать 1 пиксель = 1 единицу, когда создаете объект шириной 100 пикселей, он большой как большая планета для Box2D.Таким образом, если расстояние между двумя объектами равно 300, это займет целую вечность. То, что вам нужно, это изменить масштаб, как Box2D был разработан.
Я рекомендую вам прочитать или посмотреть некоторые учебные пособия Box2D, подобные этому http://www.kerp.net/box2d/ Это руководство предназначено для версии Flash Box2D, но основным отличием являются имена классов.

...