List of usage examples for com.badlogic.gdx.physics.box2d Body createFixture
public Fixture createFixture(Shape shape, float density)
From source file:com.agateau.pixelwheels.utils.Box2DUtils.java
License:Open Source License
@SuppressWarnings("unused") public static Body createStaticBox(World world, float x, float y, float width, float height) { BodyDef bodyDef = new BodyDef(); bodyDef.type = BodyDef.BodyType.StaticBody; bodyDef.position.set(x + width / 2, y + height / 2); Body body = world.createBody(bodyDef); PolygonShape shape = new PolygonShape(); shape.setAsBox(width / 2, height / 2); body.createFixture(shape, 1); return body;/* w w w.j a v a2 s. c o m*/ }
From source file:com.agateau.pixelwheels.utils.Box2DUtils.java
License:Open Source License
public static Body createStaticBodyForMapObject(World world, MapObject object) { final float u = Constants.UNIT_FOR_PIXEL; float rotation = object.getProperties().get("rotation", 0f, Float.class); BodyDef bodyDef = new BodyDef(); bodyDef.type = BodyDef.BodyType.StaticBody; bodyDef.angle = -rotation * MathUtils.degreesToRadians; if (object instanceof RectangleMapObject) { Rectangle rect = ((RectangleMapObject) object).getRectangle(); /*/* w w w . j av a2 s. c o m*/ A D x--------x | | x--------x B C */ float[] vertices = new float[8]; // A vertices[0] = 0; vertices[1] = 0; // B vertices[2] = 0; vertices[3] = -rect.getHeight(); // C vertices[4] = rect.getWidth(); vertices[5] = -rect.getHeight(); // D vertices[6] = rect.getWidth(); vertices[7] = 0; scaleVertices(vertices, u); bodyDef.position.set(u * rect.getX(), u * (rect.getY() + rect.getHeight())); Body body = world.createBody(bodyDef); PolygonShape shape = new PolygonShape(); shape.set(vertices); body.createFixture(shape, 1); return body; } else if (object instanceof PolygonMapObject) { Polygon polygon = ((PolygonMapObject) object).getPolygon(); float[] vertices = polygon.getVertices().clone(); scaleVertices(vertices, u); bodyDef.position.set(polygon.getX() * u, polygon.getY() * u); Body body = world.createBody(bodyDef); PolygonShape shape = new PolygonShape(); shape.set(vertices); body.createFixture(shape, 1); return body; } else if (object instanceof EllipseMapObject) { Ellipse ellipse = ((EllipseMapObject) object).getEllipse(); float radius = ellipse.width * u / 2; float x = ellipse.x * u + radius; float y = ellipse.y * u + radius; bodyDef.position.set(x, y); Body body = world.createBody(bodyDef); CircleShape shape = new CircleShape(); shape.setRadius(radius); body.createFixture(shape, 1); return body; } throw new RuntimeException("Unsupported MapObject type: " + object); }
From source file:com.badlogic.gdx.tests.box2d.Bridge.java
License:Apache License
@Override protected void createWorld(World world) { Body ground; {/*from w ww . j a va 2 s. co m*/ 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; {/*from w ww.ja v a 2s. c om*/ 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. ja v a 2 s . co 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.CharacterCollision.java
License:Apache License
@Override protected void createWorld(World world) { {/*from w w w . j a va2 s .co m*/ BodyDef bd = new BodyDef(); Body ground = world.createBody(bd); EdgeShape shape = new EdgeShape(); shape.set(new Vector2(-20, 0), new Vector2(20, 0)); ground.createFixture(shape, 0); shape.dispose(); } { BodyDef bd = new BodyDef(); Body ground = world.createBody(bd); EdgeShape shape = new EdgeShape(); shape.setRadius(0); shape.set(new Vector2(-8, 1), new Vector2(-6, 1)); ground.createFixture(shape, 0); shape.set(new Vector2(-6, 1), new Vector2(-4, 1)); ground.createFixture(shape, 0); shape.set(new Vector2(-4, 1), new Vector2(-2, 1)); ground.createFixture(shape, 0); shape.dispose(); } { BodyDef bd = new BodyDef(); Body ground = world.createBody(bd); PolygonShape shape = new PolygonShape(); shape.setAsBox(1, 1, new Vector2(4, 3), 0); ground.createFixture(shape, 0); shape.setAsBox(1, 1, new Vector2(6, 3), 0); ground.createFixture(shape, 0); shape.setAsBox(1, 1, new Vector2(8, 3), 0); ground.createFixture(shape, 0); shape.dispose(); } { BodyDef bd = new BodyDef(); Body ground = world.createBody(bd); EdgeShape shape = new EdgeShape(); float d = 2 * 2 * 0.005f; shape.setRadius(0); shape.set(new Vector2(-1 + d, 3), new Vector2(1 - d, 3)); ground.createFixture(shape, 0); shape.set(new Vector2(1, 3 + d), new Vector2(1, 5 - d)); ground.createFixture(shape, 0); shape.set(new Vector2(1 - d, 5), new Vector2(-1 + d, 5)); ground.createFixture(shape, 0); shape.set(new Vector2(-1, 5 - d), new Vector2(-1, 3 + d)); ground.createFixture(shape, 0); shape.dispose(); } { BodyDef bd = new BodyDef(); bd.position.set(-3, 5); bd.type = BodyType.DynamicBody; bd.fixedRotation = true; bd.allowSleep = false; Body body = world.createBody(bd); PolygonShape shape = new PolygonShape(); shape.setAsBox(0.5f, 0.5f); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.density = 20.0f; body.createFixture(fd); shape.dispose(); } { BodyDef bd = new BodyDef(); bd.position.set(-5, 5); bd.type = BodyType.DynamicBody; bd.fixedRotation = true; bd.allowSleep = false; Body body = world.createBody(bd); float angle = 0; float delta = (float) Math.PI / 3; Vector2[] vertices = new Vector2[6]; for (int i = 0; i < 6; i++) { vertices[i] = new Vector2(0.5f * (float) Math.cos(angle), 0.5f * (float) Math.sin(angle)); angle += delta; } PolygonShape shape = new PolygonShape(); shape.set(vertices); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.density = 20.0f; body.createFixture(fd); shape.dispose(); } { BodyDef bd = new BodyDef(); bd.position.set(3, 5); bd.type = BodyType.DynamicBody; bd.fixedRotation = true; bd.allowSleep = false; Body body = world.createBody(bd); CircleShape shape = new CircleShape(); shape.setRadius(0.5f); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.density = 20.0f; body.createFixture(fd); shape.dispose(); } }
From source file:com.badlogic.gdx.tests.box2d.OneSidedPlatform.java
License:Apache License
@Override protected void createWorld(World world) { {/*from w ww .ja v a2 s . co m*/ BodyDef bd = new BodyDef(); Body ground = world.createBody(bd); EdgeShape shape = new EdgeShape(); shape.set(new Vector2(-20.0f, 0), new Vector2(20.0f, 0f)); ground.createFixture(shape, 0); shape.dispose(); } { BodyDef bd = new BodyDef(); bd.position.set(0, 10); Body body = world.createBody(bd); PolygonShape shape = new PolygonShape(); shape.setAsBox(3, 0.5f); m_platform = body.createFixture(shape, 0); m_bottom = 10.0f - 0.5f; m_top = 10.0f + 0.5f; } { BodyDef bd = new BodyDef(); bd.type = BodyType.DynamicBody; bd.position.set(0, 12); Body body = world.createBody(bd); m_radius = 0.5f; CircleShape shape = new CircleShape(); shape.setRadius(m_radius); m_character = body.createFixture(shape, 20.0f); shape.dispose(); m_state = State.Unknown; } world.setContactFilter(new ContactFilter() { @Override public boolean shouldCollide(Fixture fixtureA, Fixture fixtureB) { if ((fixtureA == m_platform && fixtureB == m_character) || (fixtureA == m_platform && fixtureB == m_character)) { Vector2 position = m_character.getBody().getPosition(); if (position.y < m_top + m_radius - 3.0f * 0.005f) return false; else return true; } else return true; } }); }
From source file:com.badlogic.gdx.tests.box2d.Prismatic.java
License:Apache License
@Override protected void createWorld(World world) { Body ground; {/*from w ww. ja v a 2s.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(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.badlogic.gdx.tests.box2d.Pyramid.java
License:Apache License
@Override protected void createWorld(World world) { {// w w w.j a v a2s. co m BodyDef bd = new BodyDef(); Body 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(); } { float a = 0.5f; PolygonShape shape = new PolygonShape(); shape.setAsBox(a, a); Vector2 x = new Vector2(-7.0f, 0.75f); Vector2 y = new Vector2(); Vector2 deltaX = new Vector2(0.5625f, 1.25f); Vector2 deltaY = new Vector2(1.125f, 0.0f); for (int i = 0; i < 20; i++) { y.set(x); for (int j = i; j < 20; j++) { BodyDef bd = new BodyDef(); bd.type = BodyType.DynamicBody; bd.position.set(y); Body body = world.createBody(bd); body.createFixture(shape, 5.0f); y.add(deltaY); } x.add(deltaX); } } }
From source file:com.badlogic.gdx.tests.box2d.SphereStack.java
License:Apache License
@Override protected void createWorld(World world) { {/* www . jav a 2 s . com*/ BodyDef bd = new BodyDef(); Body ground = world.createBody(bd); EdgeShape shape = new EdgeShape(); shape.set(new Vector2(-40, 0), new Vector2(40, 0)); ground.createFixture(shape, 0); shape.dispose(); } { CircleShape shape = new CircleShape(); shape.setRadius(1.0f); for (int i = 0; i < e_count; i++) { BodyDef bd = new BodyDef(); bd.type = BodyType.DynamicBody; bd.position.set(0, 4.0f + 3.0f * i); Body body = world.createBody(bd); body.createFixture(shape, 1.0f); } shape.dispose(); } }