Is it possible to change the shape of a Box2d b2Body dynamically? I want to do this to achieve the following.
i). Increasing the radius of a circle shape at a certain rate
ii). Changing the dimensions of a bounding box for a sprite to match the changing animation frames.
float radius;
radius = 1;
Create body:
b2BodyDef bodyDef;
bodyDef.type = b2_dynamicBody;
bodyDef.position.Set(300/PTM_RATIO, 150/PTM_RATIO);
body = world->CreateBody(&bodyDef);
b2CircleShape circleShape;
circleShape.m_radius = radius;
b2FixtureDef fixtureDef;
fixtureDef.shape = &circleShape;
fixtureDef.density = 1;
fixtureDef.friction = 0.3f;
body ->CreateFixture(&fixtureDef);
In your touch method:
- (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
if (body != NULL) {
b2Fixture *fixtureA = body->GetFixtureList();
body->DestroyFixture(fixtureA);
b2CircleShape circleShape;
circleShape.m_radius = radius + 0.3;
b2FixtureDef fixtureDef;
fixtureDef.shape = &circleShape;
fixtureDef.density = 1;
fixtureDef.friction = 0.3f;
body->CreateFixture(&fixtureDef);
radius = radius + 0.3;
}
With every touch body will become bigger for 0.3.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With