List of usage examples for com.badlogic.gdx.physics.box2d World createJoint
public Joint createJoint(JointDef def)
From source file:com.badlogic.gdx.tests.box2d.ApplyForce.java
License:Apache License
@Override protected void createWorld(World world) { world.setGravity(new Vector2(0, 0)); float k_restitution = 0.4f; Body ground;// ww w .ja v a 2 s.c o m { BodyDef bd = new BodyDef(); bd.position.set(0, 20); ground = world.createBody(bd); EdgeShape shape = new EdgeShape(); FixtureDef sd = new FixtureDef(); sd.shape = shape; sd.density = 0; sd.restitution = k_restitution; shape.set(new Vector2(-20, -20), new Vector2(-20, 20)); ground.createFixture(sd); shape.set(new Vector2(20, -20), new Vector2(20, 20)); ground.createFixture(sd); shape.set(new Vector2(-20, 20), new Vector2(20, 20)); ground.createFixture(sd); shape.set(new Vector2(-20, -20), new Vector2(20, -20)); ground.createFixture(sd); shape.dispose(); } { Transform xf1 = new Transform(new Vector2(), 0.3524f * (float) Math.PI); xf1.setPosition(xf1.mul(new Vector2(1, 0))); Vector2[] vertices = new Vector2[3]; vertices[0] = xf1.mul(new Vector2(-1, 0)); vertices[1] = xf1.mul(new Vector2(1, 0)); vertices[2] = xf1.mul(new Vector2(0, 0.5f)); PolygonShape poly1 = new PolygonShape(); poly1.set(vertices); FixtureDef sd1 = new FixtureDef(); sd1.shape = poly1; sd1.density = 4.0f; Transform xf2 = new Transform(new Vector2(), -0.3524f * (float) Math.PI); xf2.setPosition(xf2.mul(new Vector2(-1, 0))); vertices[0] = xf2.mul(new Vector2(-1, 0)); vertices[1] = xf2.mul(new Vector2(1, 0)); vertices[2] = xf2.mul(new Vector2(0, 0.5f)); PolygonShape poly2 = new PolygonShape(); poly2.set(vertices); FixtureDef sd2 = new FixtureDef(); sd2.shape = poly2; sd2.density = 2.0f; BodyDef bd = new BodyDef(); bd.type = BodyType.DynamicBody; bd.angularDamping = 5.0f; bd.linearDamping = 0.1f; bd.position.set(0, 2); bd.angle = (float) Math.PI; bd.allowSleep = false; m_body = world.createBody(bd); m_body.createFixture(sd1); m_body.createFixture(sd2); poly1.dispose(); poly2.dispose(); } { PolygonShape shape = new PolygonShape(); shape.setAsBox(0.5f, 0.5f); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.density = 1.0f; fd.friction = 0.3f; for (int i = 0; i < 10; i++) { BodyDef bd = new BodyDef(); bd.type = BodyType.DynamicBody; bd.position.set(0, 5 + 1.54f * i); Body body = world.createBody(bd); body.createFixture(fd); float gravity = 10.0f; float I = body.getInertia(); float mass = body.getMass(); float radius = (float) Math.sqrt(2 * I / mass); FrictionJointDef jd = new FrictionJointDef(); jd.localAnchorA.set(0, 0); jd.localAnchorB.set(0, 0); jd.bodyA = ground; jd.bodyB = body; jd.collideConnected = true; jd.maxForce = mass * gravity; jd.maxTorque = mass * radius * gravity; world.createJoint(jd); } shape.dispose(); } }
From source file:com.badlogic.gdx.tests.box2d.BodyTypes.java
License:Apache License
@Override protected void createWorld(World world) { Body ground;/*from w ww .j a va2s . c o m*/ { BodyDef bd = new BodyDef(); ground = world.createBody(bd); EdgeShape shape = new EdgeShape(); shape.set(new Vector2(-20, 0), new Vector2(20, 0)); FixtureDef fd = new FixtureDef(); fd.shape = shape; ground.createFixture(fd); shape.dispose(); } { BodyDef bd = new BodyDef(); bd.type = BodyType.DynamicBody; bd.position.set(0, 3.0f); m_attachment = world.createBody(bd); PolygonShape shape = new PolygonShape(); shape.setAsBox(0.5f, 2.0f); m_attachment.createFixture(shape, 2.0f); shape.dispose(); } { BodyDef bd = new BodyDef(); bd.type = BodyType.DynamicBody; bd.position.set(-4.0f, 5.0f); m_platform = world.createBody(bd); PolygonShape shape = new PolygonShape(); shape.setAsBox(0.5f, 4.0f, new Vector2(4.0f, 0), 0.5f * (float) Math.PI); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.6f; fd.density = 2.0f; m_platform.createFixture(fd); shape.dispose(); RevoluteJointDef rjd = new RevoluteJointDef(); rjd.initialize(m_attachment, m_platform, new Vector2(0, 5.0f)); rjd.maxMotorTorque = 50.0f; rjd.enableMotor = true; world.createJoint(rjd); PrismaticJointDef pjd = new PrismaticJointDef(); pjd.initialize(ground, m_platform, new Vector2(0, 5.0f), new Vector2(1, 0)); pjd.maxMotorForce = 1000.0f; pjd.enableMotor = true; pjd.lowerTranslation = -10f; pjd.upperTranslation = 10.0f; pjd.enableLimit = true; world.createJoint(pjd); m_speed = 3.0f; } { BodyDef bd = new BodyDef(); bd.type = BodyType.DynamicBody; bd.position.set(0, 8.0f); Body body = world.createBody(bd); PolygonShape shape = new PolygonShape(); shape.setAsBox(0.75f, 0.75f); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.6f; fd.density = 2.0f; body.createFixture(fd); shape.dispose(); } }
From source file:com.badlogic.gdx.tests.box2d.Bridge.java
License:Apache License
@Override protected void createWorld(World world) { Body ground;/*ww w.j a v a 2 s . c om*/ { BodyDef bd = new BodyDef(); ground = world.createBody(bd); EdgeShape shape = new EdgeShape(); shape.set(new Vector2(-40, 0), new Vector2(40.0f, 0)); ground.createFixture(shape, 0); shape.dispose(); } { PolygonShape shape = new PolygonShape(); shape.setAsBox(0.5f, 0.125f); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.density = 20.0f; fd.friction = 0.2f; RevoluteJointDef jd = new RevoluteJointDef(); Body prevBody = ground; for (int i = 0; i < e_count; i++) { BodyDef bd = new BodyDef(); bd.type = BodyType.DynamicBody; bd.position.set(-14.5f + 1.0f * i, 5.0f); Body body = world.createBody(bd); body.createFixture(fd); Vector2 anchor = new Vector2(-15.0f + 1.0f * i, 5.0f); jd.initialize(prevBody, body, anchor); world.createJoint(jd); prevBody = body; } Vector2 anchor = new Vector2(-15.0f + 1.0f * e_count, 5.0f); jd.initialize(prevBody, ground, anchor); world.createJoint(jd); shape.dispose(); } for (int i = 0; i < 2; i++) { Vector2[] vertices = new Vector2[3]; vertices[0] = new Vector2(-0.5f, 0); vertices[1] = new Vector2(0.5f, 0); vertices[2] = new Vector2(0, 1.5f); PolygonShape shape = new PolygonShape(); shape.set(vertices); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.density = 1.0f; BodyDef bd = new BodyDef(); bd.type = BodyType.DynamicBody; bd.position.set(-8.0f + 8.0f * i, 12.0f); Body body = world.createBody(bd); body.createFixture(fd); shape.dispose(); } for (int i = 0; i < 3; i++) { CircleShape shape = new CircleShape(); shape.setRadius(0.5f); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.density = 1.0f; BodyDef bd = new BodyDef(); bd.type = BodyType.DynamicBody; bd.position.set(-6.0f + 6.0f * i, 10.0f); Body body = world.createBody(bd); body.createFixture(fd); shape.dispose(); } }
From source file:com.badlogic.gdx.tests.box2d.Cantilever.java
License:Apache License
@Override protected void createWorld(World world) { Body ground;/* w w w . j ava 2 s. c o m*/ { BodyDef bd = new BodyDef(); ground = world.createBody(bd); EdgeShape shape = new EdgeShape(); shape.set(new Vector2(-40, 0), new Vector2(40, 0)); ground.createFixture(shape, 0); shape.dispose(); } { PolygonShape shape = new PolygonShape(); shape.setAsBox(0.5f, 0.125f); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.density = 20.0f; WeldJointDef jd = new WeldJointDef(); Body prevBody = ground; for (int i = 0; i < e_count; i++) { BodyDef bd = new BodyDef(); bd.type = BodyType.DynamicBody; bd.position.set(-14.5f + 1.0f * i, 5.0f); Body body = world.createBody(bd); body.createFixture(fd); Vector2 anchor = new Vector2(-15.0f + 1 * i, 5.0f); jd.initialize(prevBody, body, anchor); world.createJoint(jd); prevBody = body; } shape.dispose(); } { PolygonShape shape = new PolygonShape(); shape.setAsBox(0.5f, 0.125f); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.density = 20.0f; WeldJointDef jd = new WeldJointDef(); Body prevBody = ground; for (int i = 0; i < e_count; i++) { BodyDef bd = new BodyDef(); bd.type = BodyType.DynamicBody; bd.position.set(-14.5f + 1.0f * i, 15.0f); bd.gravityScale = 10.0f; Body body = world.createBody(bd); body.createFixture(fd); Vector2 anchor = new Vector2(-15.0f + 1.0f * i, 15.0f); jd.initialize(prevBody, body, anchor); world.createJoint(jd); prevBody = body; } shape.dispose(); } { PolygonShape shape = new PolygonShape(); shape.setAsBox(0.5f, 0.125f); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.density = 20.0f; WeldJointDef jd = new WeldJointDef(); Body prevBody = ground; for (int i = 0; i < e_count; i++) { BodyDef bd = new BodyDef(); bd.type = BodyType.DynamicBody; bd.position.set(-4.5f + 1.0f * i, 5.0f); Body body = world.createBody(bd); body.createFixture(fd); if (i > 0) { Vector2 anchor = new Vector2(-5.0f + 1.0f * i, 5.0f); jd.initialize(prevBody, body, anchor); world.createJoint(jd); } prevBody = body; } shape.dispose(); } { PolygonShape shape = new PolygonShape(); shape.setAsBox(0.5f, 0.125f); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.density = 20.0f; WeldJointDef jd = new WeldJointDef(); Body prevBody = ground; for (int i = 0; i < e_count; i++) { BodyDef bd = new BodyDef(); bd.type = BodyType.DynamicBody; bd.position.set(5.5f + 1.0f * i, 10.0f); bd.gravityScale = 10.0f; Body body = world.createBody(bd); body.createFixture(fd); if (i > 0) { Vector2 anchor = new Vector2(5.0f + 1.0f * i, 10.0f); jd.initialize(prevBody, body, anchor); world.createJoint(jd); } prevBody = body; } shape.dispose(); } for (int i = 0; i < 2; i++) { Vector2[] vertices = new Vector2[3]; vertices[0] = new Vector2(-0.5f, 0); vertices[1] = new Vector2(0.5f, 0); vertices[2] = new Vector2(0, 1.5f); PolygonShape shape = new PolygonShape(); shape.set(vertices); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.density = 1.0f; BodyDef bd = new BodyDef(); bd.type = BodyType.DynamicBody; bd.position.set(-8.0f + 8.0f * i, 12.0f); Body body = world.createBody(bd); body.createFixture(fd); shape.dispose(); } for (int i = 0; i < 2; i++) { CircleShape shape = new CircleShape(); shape.setRadius(0.5f); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.density = 1.0f; BodyDef bd = new BodyDef(); bd.type = BodyType.DynamicBody; bd.position.set(-6.0f + 6.0f * i, 10.0f); Body body = world.createBody(bd); body.createFixture(fd); shape.dispose(); } }
From source file:com.badlogic.gdx.tests.box2d.Chain.java
License:Apache License
@Override protected void createWorld(World world) { Body ground;//from w w w . j a v a2 s.c o m { BodyDef bd = new BodyDef(); ground = world.createBody(bd); EdgeShape shape = new EdgeShape(); shape.set(new Vector2(-40, 0), new Vector2(40, 0)); ground.createFixture(shape, 0.0f); shape.dispose(); } { PolygonShape shape = new PolygonShape(); shape.setAsBox(0.6f, 0.125f); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.density = 20.0f; fd.friction = 0.2f; RevoluteJointDef jd = new RevoluteJointDef(); jd.collideConnected = false; float y = 25.0f; Body prevBody = ground; for (int i = 0; i < 30; i++) { BodyDef bd = new BodyDef(); bd.type = BodyType.DynamicBody; bd.position.set(0.5f + i, y); Body body = world.createBody(bd); body.createFixture(fd); Vector2 anchor = new Vector2(i, y); jd.initialize(prevBody, body, anchor); world.createJoint(jd); prevBody = body; } shape.dispose(); } }
From source file:com.badlogic.gdx.tests.box2d.CollisionFiltering.java
License:Apache License
@Override protected void createWorld(World world) { {/*from www .j ava 2 s.c o m*/ EdgeShape shape = new EdgeShape(); shape.set(new Vector2(-40.0f, 0), new Vector2(40, 0)); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.3f; BodyDef bd = new BodyDef(); Body ground = world.createBody(bd); ground.createFixture(fd); shape.dispose(); } Vector2[] vertices = new Vector2[3]; vertices[0] = new Vector2(-1, 0); vertices[1] = new Vector2(1, 0); vertices[2] = new Vector2(0, 2); PolygonShape polygon = new PolygonShape(); polygon.set(vertices); FixtureDef triangleShapeDef = new FixtureDef(); triangleShapeDef.shape = polygon; triangleShapeDef.density = 1.0f; triangleShapeDef.filter.groupIndex = k_smallGroup; triangleShapeDef.filter.categoryBits = k_triangleCategory; triangleShapeDef.filter.maskBits = k_triangleMask; BodyDef triangleBodyDef = new BodyDef(); triangleBodyDef.type = BodyType.DynamicBody; triangleBodyDef.position.set(-5, 2); Body body1 = world.createBody(triangleBodyDef); body1.createFixture(triangleShapeDef); vertices[0].scl(2); vertices[1].scl(2); vertices[2].scl(2); polygon.set(vertices); triangleShapeDef.filter.groupIndex = k_largeGroup; triangleBodyDef.position.set(-5, 6); triangleBodyDef.fixedRotation = true; Body body2 = world.createBody(triangleBodyDef); body2.createFixture(triangleShapeDef); { BodyDef bd = new BodyDef(); bd.type = BodyType.DynamicBody; bd.position.set(-5, 10); Body body = world.createBody(bd); PolygonShape p = new PolygonShape(); p.setAsBox(0.5f, 1.0f); body.createFixture(p, 1); PrismaticJointDef jd = new PrismaticJointDef(); jd.bodyA = body2; jd.bodyB = body; jd.enableLimit = true; jd.localAnchorA.set(0, 4); jd.localAnchorB.set(0, 0); jd.localAxisA.set(0, 1); jd.lowerTranslation = -1; jd.upperTranslation = 1; world.createJoint(jd); p.dispose(); } polygon.setAsBox(1, 0.5f); FixtureDef boxShapeDef = new FixtureDef(); boxShapeDef.shape = polygon; boxShapeDef.density = 1; boxShapeDef.restitution = 0.1f; boxShapeDef.filter.groupIndex = k_smallGroup; boxShapeDef.filter.categoryBits = k_boxCategory; boxShapeDef.filter.maskBits = k_boxMask; BodyDef boxBodyDef = new BodyDef(); boxBodyDef.type = BodyType.DynamicBody; boxBodyDef.position.set(0, 2); Body body3 = world.createBody(boxBodyDef); body3.createFixture(boxShapeDef); polygon.setAsBox(2, 1); boxShapeDef.filter.groupIndex = k_largeGroup; boxBodyDef.position.set(0, 6); Body body4 = world.createBody(boxBodyDef); body4.createFixture(boxShapeDef); CircleShape circle = new CircleShape(); circle.setRadius(1); FixtureDef circleShapeDef = new FixtureDef(); circleShapeDef.shape = circle; circleShapeDef.density = 1.0f; circleShapeDef.filter.groupIndex = k_smallGroup; circleShapeDef.filter.categoryBits = k_circleCategory; circleShapeDef.filter.maskBits = k_circleMask; BodyDef circleBodyDef = new BodyDef(); circleBodyDef.type = BodyType.DynamicBody; circleBodyDef.position.set(5, 2); Body body5 = world.createBody(circleBodyDef); body5.createFixture(circleShapeDef); circle.setRadius(2); circleShapeDef.filter.groupIndex = k_largeGroup; circleBodyDef.position.set(5, 6); Body body6 = world.createBody(circleBodyDef); body6.createFixture(circleShapeDef); }
From source file:com.badlogic.gdx.tests.box2d.Prismatic.java
License:Apache License
@Override protected void createWorld(World world) { Body ground;//from w ww . j a va 2 s . com { BodyDef bd = new BodyDef(); ground = world.createBody(bd); EdgeShape shape = new EdgeShape(); shape.set(new Vector2(-40, 0), new Vector2(40, 0)); ground.createFixture(shape, 0); shape.dispose(); } { PolygonShape shape = new PolygonShape(); shape.setAsBox(2, 5); BodyDef bd = new BodyDef(); bd.type = BodyType.DynamicBody; bd.position.set(-10, 10); bd.angle = 0.5f * (float) Math.PI; bd.allowSleep = false; Body body = world.createBody(bd); body.createFixture(shape, 5.0f); PrismaticJointDef pjd = new PrismaticJointDef(); Vector2 axis = new Vector2(2, 1); axis.nor(); pjd.initialize(ground, body, new Vector2(0, 0), axis); pjd.motorSpeed = 10.0f; pjd.maxMotorForce = 10000.0f; pjd.enableMotor = true; pjd.lowerTranslation = 0; pjd.upperTranslation = 20.0f; pjd.enableLimit = true; m_joint = (PrismaticJoint) world.createJoint(pjd); } }
From source file:com.tnf.ptm.entities.ship.ShipBuilder.java
License:Apache License
private PrismaticJoint createDoorJoint(Body shipBody, World w, Vector2 shipPos, Vector2 doorRelPos, float shipAngle) { Body doorBody = createDoorBody(w, shipPos, doorRelPos, shipAngle); PrismaticJointDef jd = new PrismaticJointDef(); jd.initialize(shipBody, doorBody, shipPos, Vector2.Zero); jd.localAxisA.set(1, 0);/* w w w .j ava 2s. c om*/ jd.collideConnected = false; jd.enableLimit = true; jd.enableMotor = true; jd.lowerTranslation = 0; jd.upperTranslation = Door.DOOR_LEN; jd.maxMotorForce = 2; return (PrismaticJoint) w.createJoint(jd); }
From source file:de.cwclan.gdxtest.core.entities.Car.java
public Car(World world, FixtureDef chassisFixtureDef, FixtureDef wheelFixtureDef, float x, float y, float width, float height) { this.world = world; BodyDef bodyDef = new BodyDef(); bodyDef.type = BodyDef.BodyType.DynamicBody; bodyDef.position.set(x, y);/*from w ww .j a v a2 s . c o m*/ //chassis PolygonShape chassisShape = new PolygonShape(); chassisShape.set(new float[] { -width / 2, -height / 2, width / 2, -height / 2, width / 2 * .4f, height / 2, -width / 2 * .8f, height / 2 * .8f }); chassisFixtureDef.shape = chassisShape; chassis = world.createBody(bodyDef); chassis.createFixture(chassisFixtureDef); CircleShape wheelShape = new CircleShape(); wheelShape.setRadius(height / 3.5f); wheelFixtureDef.shape = wheelShape; //left wheel leftWheel = world.createBody(bodyDef); leftWheel.createFixture(wheelFixtureDef); //right wheel rightWheel = world.createBody(bodyDef); rightWheel.createFixture(wheelFixtureDef); //left axis WheelJointDef axisDef = new WheelJointDef(); axisDef.bodyA = chassis; axisDef.bodyB = leftWheel; axisDef.localAnchorA.set(-width / 2 * .75f + wheelShape.getRadius(), -height / 2 * 1.25f); axisDef.frequencyHz = chassisFixtureDef.density; axisDef.localAxisA.set(Vector2.Y); axisDef.maxMotorTorque = chassisFixtureDef.density * 10; leftAxis = (WheelJoint) world.createJoint(axisDef); //right axis axisDef.bodyB = rightWheel; axisDef.localAnchorA.x *= -1; rightAxis = (WheelJoint) world.createJoint(axisDef); }
From source file:Helper.WorldUtils.java
public static void createAntelope(World world, Body body, Body backBody) { RevoluteJointDef jointDef = new RevoluteJointDef(); jointDef.initialize(backBody, body, backBody.getWorldCenter()); jointDef.collideConnected = true;/*from ww w . j ava2s. c o m*/ world.createJoint(jointDef); }