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