Example usage for com.badlogic.gdx.physics.box2d CircleShape CircleShape

List of usage examples for com.badlogic.gdx.physics.box2d CircleShape CircleShape

Introduction

In this page you can find the example usage for com.badlogic.gdx.physics.box2d CircleShape CircleShape.

Prototype

public CircleShape() 

Source Link

Usage

From source file:Tabox2D.java

License:Open Source License

/**
 * Creates a new Ball (circle shape)/*  w  w  w  . j a v a2s.  c  o m*/
 * @param type "dynamic" or "static"
 * @param x Center X of the ball
 * @param y Center Y of the ball
 * @param r Radius
 * @return A new Tabody instance
 */
public Tabody newBall(String type, float x, float y, float r) {
    // Scale proportions:
    x = x / meterSize;
    y = y / meterSize;
    r = r / meterSize;

    CircleShape circleShape;
    BodyDef defBall = new BodyDef();

    setType(defBall, type);

    defBall.position.set(x, y);

    Tabody ball = new Tabody();
    ball.body = world.createBody(defBall);
    circleShape = new CircleShape();
    circleShape.setRadius(r);

    FixtureDef fixtureBall = new FixtureDef();
    fixtureBall.shape = circleShape;
    fixtureBall.density = 1;
    fixtureBall.friction = 1;
    fixtureBall.restitution = 0;

    ////////////////////////////////////////
    ball.w = r * 2 * meterSize;
    ball.h = r * 2 * meterSize;
    ball.fixture = fixtureBall;
    ball.bodyType = "ball";
    ////////////////////////////////////////

    ball.body.createFixture(fixtureBall);
    circleShape.dispose();
    tabodies.add(ball);
    return ball;
}

From source file:be.ac.ucl.lfsab1509.bouboule.game.body.GameBody.java

License:Open Source License

/**
 * Make a circle object with the constructor argument MakeBody.
 * /* w  ww . j av  a2  s.c  o m*/
 * makeCircleBody(float radius,BodyDef.BodyType bodyType,
 *    float density,float elasticity, Vector2 pos,float angle)
 */
private void makeCircleBody(final float radius, final BodyDef.BodyType bodyType, final float density,
        final float elasticity, final boolean sensor, final Vector2 pos, final float angle) {

    //Basoic Object definition for Physics
    FixtureDef fixtureDef = new FixtureDef();
    fixtureDef.density = density;
    fixtureDef.restitution = elasticity;
    fixtureDef.isSensor = sensor;
    //fixtureDef.friction    = 0.5f;
    fixtureDef.shape = new CircleShape();

    //Game adimenstionalition
    fixtureDef.shape.setRadius(GraphicManager.convertToGame(radius));

    body.createFixture(fixtureDef);
    fixtureDef.shape.dispose();
}

From source file:ch.coldpixel.mario.Sprites.Mario.java

public void defineMario() {
    BodyDef bdef = new BodyDef();
    bdef.position.set(32 / MarioBros.PPM, 32 / MarioBros.PPM);
    bdef.type = BodyDef.BodyType.DynamicBody;
    b2body = world.createBody(bdef);//from w w  w  .j  a v a 2 s  .c  o  m

    FixtureDef fdef = new FixtureDef();
    CircleShape shape = new CircleShape();
    shape.setRadius(6 / MarioBros.PPM);

    fdef.shape = shape;
    b2body.createFixture(fdef);
}

From source file:com.agateau.pixelwheels.bonus.Mine.java

License:Open Source License

private void firstInit(Assets assets) {
    mAssets = assets;/*from   w  ww  .java2s .  co m*/
    mBodyDef = new BodyDef();
    mBodyDef.type = BodyDef.BodyType.DynamicBody;

    mShape = new CircleShape();
    mShape.setRadius(MINE_RADIUS);
}

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();

        /*//from  w w  w.ja  v  a  2  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;/*  w w  w  .  j  a  v a2s . 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;//w w  w.ja 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, 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.CharacterCollision.java

License:Apache License

@Override
protected void createWorld(World world) {
    {/*w  ww .  j  av a2 s. c  o  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.CollisionFiltering.java

License:Apache License

@Override
protected void createWorld(World world) {
    {// w  ww. j  a va 2s  . co  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.OneSidedPlatform.java

License:Apache License

@Override
protected void createWorld(World world) {
    {//w  w  w  .j a  va2 s .com
        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;
        }

    });
}