def Create(self, index) : bd=box2d.b2BodyDef() x = box2d.b2Random(-2.0, 2.0) bd.position.Set(x, 10.0) bd.angle = box2d.b2Random(-box2d.b2_pi, box2d.b2_pi) if (index == 4) : bd.angularDamping = 0.02 self.bodies.append(self.world.CreateBody(bd) ) if (index < 4) : self.bodies[-1].CreateShape(self.sds[index]) else : self.bodies[-1].CreateShape(self.circleDef) self.bodies[-1].SetMassFromShapes()
def __init__(self): super(Test_Biped, self).__init__() k_restitution = 1.4 bd=box2d.b2BodyDef() bd.position.Set(0.0, 20.0) body = self.world.CreateBody(bd) sd=box2d.b2PolygonDef() sd.density = 0.0 sd.restitution = k_restitution sd.SetAsBox(0.1, 10.0, box2d.b2Vec2(-10.0, 0.0), 0.0) body.CreateShape(sd) sd.SetAsBox(0.1, 10.0, box2d.b2Vec2(10.0, 0.0), 0.0) body.CreateShape(sd) sd.SetAsBox(0.1, 10.0, box2d.b2Vec2(0.0, -10.0), 0.5 * box2d.b2_pi) body.CreateShape(sd) sd.SetAsBox(0.1, 10.0, box2d.b2Vec2(0.0, 10.0), -0.5 * box2d.b2_pi) body.CreateShape(sd) self.m_biped = Biped(self.world, box2d.b2Vec2(0.0, 20.0)) for i in range(8): bd=box2d.b2BodyDef() bd.position.Set(5.0, 20.0 + i) bd.isBullet = True body = self.world.CreateBody(bd) body.SetLinearVelocity(box2d.b2Vec2(0.0, -100.0)) body.SetAngularVelocity(box2d.b2Random(-50.0, 50.0)) sd=box2d.b2CircleDef() sd.radius = 0.25 sd.density = 15.0 sd.restitution = k_restitution body.CreateShape(sd) body.SetMassFromShapes()
def __init__(self): super(CompoundShapes, self).__init__() bd=box2d.b2BodyDef() bd.position.Set(0.0, -10.0) body = self.world.CreateBody(bd) sd=box2d.b2PolygonDef() sd.SetAsBox(50.0, 10.0) body.CreateShape(sd) sd1=box2d.b2CircleDef() sd1.radius = 0.5 sd1.localPosition.Set(-0.5, 0.5) sd1.density = 2.0 sd2=box2d.b2CircleDef() sd2.radius = 0.5 sd2.localPosition.Set(0.5, 0.5) sd2.density = 0.0 for i in range(10): x = box2d.b2Random(-0.1, 0.1) bd=box2d.b2BodyDef() bd.position.Set(x + 5.0, 1.05 + 2.5 * i) bd.angle = box2d.b2Random(-box2d.b2_pi, box2d.b2_pi) body = self.world.CreateBody(bd) body.CreateShape(sd1) body.CreateShape(sd2) body.SetMassFromShapes() sd1=box2d.b2PolygonDef() sd1.SetAsBox(0.25, 0.5) sd1.density = 2.0 sd2=box2d.b2PolygonDef() sd2.SetAsBox(0.25, 0.5, box2d.b2Vec2(0.0, -0.5), 0.5 * box2d.b2_pi) sd2.density = 2.0 for i in range(10): x = box2d.b2Random(-0.1, 0.1) bd=box2d.b2BodyDef() bd.position.Set(x - 5.0, 1.05 + 2.5 * i) bd.angle = box2d.b2Random(-box2d.b2_pi, box2d.b2_pi) body = self.world.CreateBody(bd) body.CreateShape(sd1) body.CreateShape(sd2) body.SetMassFromShapes() xf1 = box2d.b2XForm() xf1.R.Set(0.3524 * box2d.b2_pi) xf1.position = box2d.b2Mul(xf1.R, box2d.b2Vec2(1.0, 0.0)) sd1=box2d.b2PolygonDef() sd1.vertexCount = 3 sd1.setVertex(0, box2d.b2Mul(xf1, box2d.b2Vec2(-1.0, 0.0))) sd1.setVertex(1, box2d.b2Mul(xf1, box2d.b2Vec2(1.0, 0.0))) sd1.setVertex(2, box2d.b2Mul(xf1, box2d.b2Vec2(0.0, 0.5))) sd1.density = 2.0 xf2 = box2d.b2XForm() xf2.R.Set(-0.3524 * box2d.b2_pi) xf2.position = box2d.b2Mul(xf2.R, box2d.b2Vec2(-1.0, 0.0)) sd2=box2d.b2PolygonDef() sd2.vertexCount = 3 sd2.setVertex(0, box2d.b2Mul(xf2, box2d.b2Vec2(-1.0, 0.0))) sd2.setVertex(1, box2d.b2Mul(xf2, box2d.b2Vec2(1.0, 0.0))) sd2.setVertex(2, box2d.b2Mul(xf2, box2d.b2Vec2(0.0, 0.5))) sd2.density = 2.0 for i in range(10): x = box2d.b2Random(-0.1, 0.1) bd=box2d.b2BodyDef() bd.position.Set(x, 2.05 + 2.5 * i) bd.angle = 0.0 body = self.world.CreateBody(bd) body.CreateShape(sd1) body.CreateShape(sd2) body.SetMassFromShapes() sd_bottom=box2d.b2PolygonDef() sd_bottom.SetAsBox( 1.5, 0.15 ) sd_bottom.density = 4.0 sd_left=box2d.b2PolygonDef() sd_left.SetAsBox(0.15, 2.7, box2d.b2Vec2(-1.45, 2.35), 0.2) sd_left.density = 4.0 sd_right=box2d.b2PolygonDef() sd_right.SetAsBox(0.15, 2.7, box2d.b2Vec2(1.45, 2.35), -0.2) sd_right.density = 4.0 bd=box2d.b2BodyDef() bd.position.Set( 0.0, 2.0 ) body = self.world.CreateBody(bd) body.CreateShape(sd_bottom) body.CreateShape(sd_left) body.CreateShape(sd_right) body.SetMassFromShapes()
def __init__(self): super(CCDTest, self).__init__() # Note that this test has a lot of commented-out versions that aren't implemented here. # See the original source code for more (Box2D/Examples/TestBed/Tests/CCDTest.h) k_restitution = 1.4 bd=box2d.b2BodyDef() bd.position.Set(0.0, 20.0) body = self.world.CreateBody(bd) sd=box2d.b2PolygonDef() sd.density = 0.0 sd.restitution = k_restitution sd.SetAsBox(0.1, 10.0, box2d.b2Vec2(-10.0, 0.0), 0.0) body.CreateShape(sd) sd.SetAsBox(0.1, 10.0, box2d.b2Vec2(10.0, 0.0), 0.0) body.CreateShape(sd) sd.SetAsBox(0.1, 10.0, box2d.b2Vec2(0.0, -10.0), 0.5 * box2d.b2_pi) body.CreateShape(sd) sd.SetAsBox(0.1, 10.0, box2d.b2Vec2(0.0, 10.0), -0.5 * box2d.b2_pi) body.CreateShape(sd) sd_bottom=box2d.b2PolygonDef() sd_bottom.SetAsBox( 1.5, 0.15 ) sd_bottom.density = 4.0 sd_left=box2d.b2PolygonDef() sd_left.SetAsBox(0.15, 2.7, box2d.b2Vec2(-1.45, 2.35), 0.2) sd_left.density = 4.0 sd_right=box2d.b2PolygonDef() sd_right.SetAsBox(0.15, 2.7, box2d.b2Vec2(1.45, 2.35), -0.2) sd_right.density = 4.0 bd=box2d.b2BodyDef() bd.position.Set( 0.0, 15.0 ) body = self.world.CreateBody(bd) body.CreateShape(sd_bottom) body.CreateShape(sd_left) body.CreateShape(sd_right) body.SetMassFromShapes() return for i in range(0): bd=box2d.b2BodyDef() bd.position.Set(0.0, 15.0 + i) bd.isBullet = True body = self.world.CreateBody(bd) body.SetAngularVelocity(box2d.b2Random(-50.0, 50.0)) sd=box2d.b2CircleDef() sd.radius = 0.25 sd.density = 1.0 sd.restitution = 0.0 body.CreateShape(sd) body.SetMassFromShapes()
def __init__(self): super(CollisionProcessing, self).__init__() # Ground body sd=box2d.b2PolygonDef() sd.SetAsBox(50.0, 10.0) sd.friction = 0.3 bd=box2d.b2BodyDef() bd.position.Set(0.0, -10.0) ground = self.world.CreateBody(bd) ground.CreateShape(sd) xLo = -5.0 xHi = 5.0 yLo = 2.0 yHi = 35.0 # Small triangle triangleShapeDef=box2d.b2PolygonDef() triangleShapeDef.vertexCount = 3 triangleShapeDef.setVertex(0,-1.0, 0.0) triangleShapeDef.setVertex(1,1.0, 0.0) triangleShapeDef.setVertex(2,0.0, 2.0) triangleShapeDef.density = 1.0 triangleBodyDef=box2d.b2BodyDef() triangleBodyDef.position.Set(box2d.b2Random(xLo, xHi), box2d.b2Random(yLo, yHi)) body1 = self.world.CreateBody(triangleBodyDef) body1.CreateShape(triangleShapeDef) body1.SetMassFromShapes() # Large triangle (recycle definitions) triangleShapeDef.setVertex(0, 2.0*triangleShapeDef.getVertex(0)) triangleShapeDef.setVertex(1, 2.0*triangleShapeDef.getVertex(1)) triangleShapeDef.setVertex(2, 2.0*triangleShapeDef.getVertex(2)) triangleBodyDef.position.Set(box2d.b2Random(xLo, xHi), box2d.b2Random(yLo, yHi)) body2 = self.world.CreateBody(triangleBodyDef) body2.CreateShape(triangleShapeDef) body2.SetMassFromShapes() # Small box boxShapeDef=box2d.b2PolygonDef() boxShapeDef.SetAsBox(1.0, 0.5) boxShapeDef.density = 1.0 boxBodyDef=box2d.b2BodyDef() boxBodyDef.position.Set(box2d.b2Random(xLo, xHi), box2d.b2Random(yLo, yHi)) body3 = self.world.CreateBody(boxBodyDef) body3.CreateShape(boxShapeDef) body3.SetMassFromShapes() # Large box (recycle definitions) boxShapeDef.SetAsBox(2.0, 1.0) boxBodyDef.position.Set(box2d.b2Random(xLo, xHi), box2d.b2Random(yLo, yHi)) body4 = self.world.CreateBody(boxBodyDef) body4.CreateShape(boxShapeDef) body4.SetMassFromShapes() # Small circle circleShapeDef=box2d.b2CircleDef() circleShapeDef.radius = 1.0 circleShapeDef.density = 1.0 circleBodyDef=box2d.b2BodyDef() circleBodyDef.position.Set(box2d.b2Random(xLo, xHi), box2d.b2Random(yLo, yHi)) body5 = self.world.CreateBody(circleBodyDef) body5.CreateShape(circleShapeDef) body5.SetMassFromShapes() # Large circle circleShapeDef.radius *= 2.0 circleBodyDef.position.Set(box2d.b2Random(xLo, xHi), box2d.b2Random(yLo, yHi)) body6 = self.world.CreateBody(circleBodyDef) body6.CreateShape(circleShapeDef) body6.SetMassFromShapes()