当前位置: 首页>>代码示例>>C++>>正文


C++ b2World::SetGravity方法代码示例

本文整理汇总了C++中b2World::SetGravity方法的典型用法代码示例。如果您正苦于以下问题:C++ b2World::SetGravity方法的具体用法?C++ b2World::SetGravity怎么用?C++ b2World::SetGravity使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在b2World的用法示例。


在下文中一共展示了b2World::SetGravity方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: createWorld

    void createWorld (b2World& world) {
        world.SetGravity(b2Vec2(0, 0));

        float k_restitution = 0.4f;
        b2Body * ground;

        {
            b2BodyDef bd;
            bd.position.Set(0, 20);
            ground = world.CreateBody(&bd);

            b2PolygonShape * shape = new b2PolygonShape;

            b2FixtureDef sd;
            sd.shape = shape;
            sd.density = 0;
            sd.restitution = k_restitution;
            shape->SetAsEdge(b2Vec2(-20, -20), b2Vec2(-20, 20));
            ground->CreateFixture(&sd);

            shape->SetAsEdge(b2Vec2(20, -20), b2Vec2(20, 20));
            ground->CreateFixture(&sd);

            shape->SetAsEdge(b2Vec2(-20, 20), b2Vec2(20, 20));
            ground->CreateFixture(&sd);

            shape->SetAsEdge(b2Vec2(-20, -20), b2Vec2(20, -20));
            ground->CreateFixture(&sd);

            delete shape;
        }

        {
            b2Transform xf1;
            xf1.Set(b2Vec2(0,0), 0.3524f * (float)gdx_cpp::math::utils::detail::PI);
            xf1.Set(b2Mul(xf1, b2Vec2(1, 0)), xf1.GetAngle());

            b2Vec2 vertices[3];
            vertices[0] = b2Mul(xf1, b2Vec2(-1, 0));
            vertices[1] = b2Mul(xf1, b2Vec2(1, 0));
            vertices[2] = b2Mul(xf1, b2Vec2(0, 0.5f));

            b2PolygonShape * poly1 = new b2PolygonShape();
            poly1->Set(&vertices[0] , 3);

            b2FixtureDef sd1;
            sd1.shape = poly1;
            sd1.density = 4.0f;

            b2Transform xf2;
            xf2.Set(b2Vec2(), -0.3524f * (float)gdx_cpp::math::utils::detail::PI);
            xf2.Set(b2Mul(xf2, b2Vec2(-1, 0)), xf2.GetAngle());

            vertices[0] = b2Mul(xf2, b2Vec2(-1, 0));
            vertices[1] = b2Mul(xf2, b2Vec2(1, 0));
            vertices[2] = b2Mul(xf2, b2Vec2(0, 0.5f));

            b2PolygonShape * poly2 = new b2PolygonShape();
            poly2->Set(&vertices[0], 3);

            b2FixtureDef sd2;
            sd2.shape = poly2;
            sd2.density = 2.0f;

            b2BodyDef bd;
            bd.type = b2_dynamicBody;
            bd.angularDamping = 5.0f;
            bd.linearDamping = 0.1f;

            bd.position.Set(0, 2);
            bd.angle = (float)gdx_cpp::math::utils::detail::PI;
            bd.allowSleep = false;
            m_body = world.CreateBody(&bd);
            m_body->CreateFixture(&sd1);
            m_body->CreateFixture(&sd2);
            delete poly1;
            delete poly2;
        }

        {
            b2PolygonShape * shape = new b2PolygonShape();
            shape->SetAsBox(0.5f, 0.5f);

            b2FixtureDef fd;
            fd.shape = shape;
            fd.density = 1.0f;
            fd.friction = 0.3f;

            for (int i = 0; i < 10; i++) {
                b2BodyDef bd;
                bd.type = b2_dynamicBody;

                bd.position.Set(0, 5 + 1.54f * i);
                b2Body * body = world.CreateBody(&bd);

                body->CreateFixture(&fd);

                float gravity = 10.0f;
                float I = body->GetInertia();
                float mass = body->GetMass();
//.........这里部分代码省略.........
开发者ID:,项目名称:,代码行数:101,代码来源:


注:本文中的b2World::SetGravity方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。