Box2D: дать различные свойства прибора

В моей игре два разных тела, и я хочу установить разные свойства для каждого из них. за brick Я не хочу, чтобы это подпрыгнуло, т.е. brickFixture.restitution=0.0 но у него есть этот упругий эффект. Это потому, что мы не можем давать разные приспособления разным телам?

b2Body* brick;
b2Body* circle;

И я их определения тела и крепежа следующие:

за brick:

b2Body* addBrick(int x,int y,int w,int h,bool dyn=true)
{
    b2BodyDef bodydef;  
    bodydef.position.Set(x*P2M,y*P2M);   //Setting body position
    if(dyn)
    {
            bodydef.type=b2_dynamicBody;  // dynamic body means body will move

    }

    brick=world->CreateBody(&bodydef);        //Creating box2D body

    b2PolygonShape shape;            //Creating shape object
    shape.SetAsBox(P2M*w,P2M*h);

    ////////////// Adding Fixtures(mass, density etc) //////////////


    brickFixture.shape=&shape;
    brickFixture.density=1.0;

    brick->CreateFixture(&brickFixture);
    return brick;
}

за circle

b2Body* addCircle(int x, int y,int r, bool dyn = true)
{
    b2BodyDef bodydef;  
    bodydef.position.Set(x*P2M,y*P2M);   //Setting body position
    if(dyn)
    {
            bodydef.type=b2_dynamicBody;  // dynamic body means body will move

    }

    circle =world->CreateBody(&bodydef);        //Creating box2D body

    b2CircleShape shape; //Creating shape object
    shape.m_radius = r*P2M;
    shape.m_p.Set(0,0);



    ////////////// Adding Fixtures(mass, density etc) //////////////

   circleFixture.shape=&shape;
    circleFixture.density=1.0;
    circleFixture.restitution = 0.7;
    circle->CreateFixture(&circleFixture);
    return circle;
}

1 ответ

Возможно, что мы можем дать разные приспособления разным телам. Если вы можете сделать тело статичным, то сделайте его статичным, так как по умолчанию тело имеет динамический характер. И вы устанавливаете реституцию вручную. Пусть это сработает для вас.

Другие вопросы по тегам