Game Development Reference
In-Depth Information
Checking for collisions
The first step in collision management is to know when two bodies collide and when
two bodies do not collide anymore.
Do you remember your very first project, explained in Chapter 2 , Adding Bodies to the
World , with the ball bouncing on the floor?
We'll use it again to get as much information as we can about the collisions between
the ball and the floor.
1.
Change your Main function adding three simple lines, shown as follows:
public function Main() {
world=new b2World(new b2Vec2(0,9.81),true);
world.SetContactListener(new customContact());
var bodyDef:b2BodyDef=new b2BodyDef();
bodyDef.position.Set(320/worldScale,30/worldScale);
bodyDef.type=b2Body.b2_dynamicBody;
bodyDef.userData="Ball";
var circleShape:b2CircleShape;
circleShape=new b2CircleShape(25/worldScale);
var fixtureDef:b2FixtureDef=new b2FixtureDef();
fixtureDef.shape=circleShape;
fixtureDef.density=1;
fixtureDef.restitution=0.6;
fixtureDef.friction=0.1;
var theBall:b2Body=world.CreateBody(bodyDef);
theBall.CreateFixture(fixtureDef);
bodyDef.position.Set(320/worldScale,470/worldScale);
bodyDef.type=b2Body.b2_staticBody;
bodyDef.userData="Floor";
var polygonShape:b2PolygonShape=new b2PolygonShape();
polygonShape.SetAsBox(320/worldScale,10/worldScale);
fixtureDef.shape=polygonShape;
var theFloor:b2Body=world.CreateBody(bodyDef);
theFloor.CreateFixture(fixtureDef);
var debugDraw:b2DebugDraw=new b2DebugDraw();
var debugSprite:Sprite=new Sprite();
addChild(debugSprite);
debugDraw.SetSprite(debugSprite);
debugDraw.SetDrawScale(worldScale);
debugDraw.SetFlags(b2DebugDraw.e_shapeBit);
debugDraw.SetFillAlpha(0.5);
world.SetDebugDraw(debugDraw);
addEventListener(Event.ENTER_FRAME,updateWorld);
}
 
Search WWH ::




Custom Search