Example usage for com.badlogic.gdx.physics.box2d Body setLinearDamping

List of usage examples for com.badlogic.gdx.physics.box2d Body setLinearDamping

Introduction

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

Prototype

public void setLinearDamping(float linearDamping) 

Source Link

Document

Set the linear damping of the body.

Usage

From source file:com.dgzt.core.button.AbstractButton.java

License:Open Source License

/**
 * Create the box2D body.//w w w.j  a  v a2  s  .c  om
 * 
 * @param box2DWorld - The box2D world.
 * @return - The box2D body.
 */
private Body createBox2DBody(final World box2DWorld) {
    BodyDef bodyDef = new BodyDef();
    bodyDef.type = BodyType.DynamicBody;
    bodyDef.position.set(box2DX, box2DY);

    Body body = box2DWorld.createBody(bodyDef);

    CircleShape circle = new CircleShape();
    circle.setRadius(box2DRadius);

    FixtureDef fixtureDef = new FixtureDef();
    fixtureDef.shape = circle;
    fixtureDef.density = FIXTURE_DEFINITION_DENSITY;
    fixtureDef.friction = FIXTURE_DEFINITION_FRICTION;
    fixtureDef.restitution = FIXTURE_DEFINITION_RESTITUTION;

    fixtureDef.filter.categoryBits = getCategoryBits();
    fixtureDef.filter.maskBits = getMaskBits();

    final Fixture fixture = body.createFixture(fixtureDef);
    fixture.setUserData(this);

    circle.dispose();

    // The linear damping.
    body.setLinearDamping(BOX2D_BODY_LINEAR_DAMPING);

    return body;
}

From source file:com.gmail.emersonmx.asteroids.util.PhysicBodyFactory.java

License:Open Source License

public Body createSpaceship() {
    BodyDef bodyDef = createSpaceshipBodyDef();
    Body body = world.createBody(bodyDef);
    body.setLinearDamping(0.5f);
    PolygonShape shape = createSpaceshipShape();
    FixtureDef fixtureDef = createDefaultFixture();
    fixtureDef.shape = shape;/*from   ww w .j ava  2 s  .co  m*/
    body.createFixture(fixtureDef);
    shape.dispose();

    return body;
}

From source file:com.hatstick.fireman.physics.Box2DPhysicsWorld.java

License:Apache License

private Fixture createPhysicsObject(Rectangle bounds, ModelType type, Integer id) {

    UserData userData = new UserData(numEnterPoints, type, null);
    CircleShape objectPoly = new CircleShape();
    objectPoly.setRadius(bounds.width / 2);

    BodyDef enemyBodyDef = new BodyDef();
    enemyBodyDef.type = BodyType.DynamicBody;
    enemyBodyDef.position.x = bounds.x;//from ww w .  jav  a 2  s. c o m
    enemyBodyDef.position.y = bounds.y;
    Body objectBody = world.createBody(enemyBodyDef);
    FixtureDef objectFixtureDef = new FixtureDef();
    objectFixtureDef.shape = objectPoly;

    //   objectBody.setUserData(userData);
    objectFixtureDef.restitution = .025f;
    Fixture fixture = objectBody.createFixture(objectFixtureDef);
    fixture.setUserData(userData);
    objectBody.setLinearDamping(2f);
    objectBody.setGravityScale(.4f);
    objectBody.setFixedRotation(true);
    objectPoly.dispose();
    numEnterPoints++;

    //add a sensor on the bottom to check if touching ground (for jumping)
    PolygonShape polygonShape = new PolygonShape();
    polygonShape.setAsBox(bounds.width / 3, bounds.height / 8, new Vector2(0, -bounds.height / 2), 0);
    objectFixtureDef = new FixtureDef();
    objectFixtureDef.shape = polygonShape;
    objectFixtureDef.isSensor = true;
    Fixture footSensorFixture = objectBody.createFixture(objectFixtureDef);
    footSensorFixture.setUserData(new UserData(numEnterPoints, ModelType.FOOT_SENSOR, id));

    //add a sensor on left side to check if touching wall (for grappling)
    PolygonShape polygonShape2 = new PolygonShape();
    polygonShape2.setAsBox(bounds.width / 8, bounds.height / 3, new Vector2(-bounds.width / 2, 0), 0);
    objectFixtureDef = new FixtureDef();
    objectFixtureDef.shape = polygonShape2;
    objectFixtureDef.isSensor = true;
    Fixture leftSideSensorFixture = objectBody.createFixture(objectFixtureDef);
    leftSideSensorFixture.setUserData(new UserData(numEnterPoints, ModelType.LEFT_SIDE_SENSOR, id));

    //add a sensor on right side to check if touching wall (for grappling)
    polygonShape2.setAsBox(bounds.width / 8, bounds.height / 3, new Vector2(bounds.width / 2, 0), 0);
    objectFixtureDef = new FixtureDef();
    objectFixtureDef.shape = polygonShape2;
    objectFixtureDef.isSensor = true;
    Fixture rightSideSensorFixture = objectBody.createFixture(objectFixtureDef);
    rightSideSensorFixture.setUserData(new UserData(numEnterPoints, ModelType.RIGHT_SIDE_SENSOR, id));

    return fixture;
}

From source file:com.mygdx.game.Tools.B2WorldCreators.B2WorldCreator1_1.java

public B2WorldCreator1_1(PlayScreen1_1 screen) {

    world = screen.getWorld();/*from  w w w.jav a  2  s.c  o  m*/
    map = screen.getMap();
    enemies = new Array<Enemy>();

    BodyDef bdef = new BodyDef();
    PolygonShape shape = new PolygonShape();
    FixtureDef fdef = new FixtureDef();
    Body body;

    for (MapObject object : map.getLayers().get("Cannon").getObjects().getByType(RectangleMapObject.class)) {
        Rectangle rect = ((RectangleMapObject) object).getRectangle();
        enemies.add(new Cannon(screen, (rect.getX() + rect.getWidth() / 2) / AdventureGame.PPM,
                (rect.getY() + rect.getHeight() / 2) / AdventureGame.PPM));

    }

    for (MapObject object : map.getLayers().get("Robot").getObjects().getByType(RectangleMapObject.class)) {
        Rectangle rect = ((RectangleMapObject) object).getRectangle();
        enemies.add(new Robot(screen, (rect.getX() + rect.getWidth() / 2) / AdventureGame.PPM,
                (rect.getY() + rect.getHeight() / 2) / AdventureGame.PPM));

    }
    for (MapObject object : map.getLayers().get("AirEnemy").getObjects().getByType(RectangleMapObject.class)) {
        Rectangle rect = ((RectangleMapObject) object).getRectangle();
        enemies.add(new AirEnemy(screen, (rect.getX() + rect.getWidth() / 2) / AdventureGame.PPM,
                (rect.getY() + rect.getHeight() / 2) / AdventureGame.PPM));
    }
    for (MapObject object : map.getLayers().get("Wheel").getObjects().getByType(RectangleMapObject.class)) {
        Rectangle rect = ((RectangleMapObject) object).getRectangle();
        enemies.add(new Wheel(screen, (rect.getX() + rect.getWidth() / 2) / AdventureGame.PPM,
                (rect.getY() + rect.getHeight() / 2) / AdventureGame.PPM));

    }
    for (MapObject object : map.getLayers().get("Ground").getObjects().getByType(RectangleMapObject.class)) {
        Rectangle rect = ((RectangleMapObject) object).getRectangle();

        bdef.type = BodyDef.BodyType.StaticBody;
        bdef.position.set((rect.getX() + rect.getWidth() / 2) / AdventureGame.PPM,
                (rect.getY() + rect.getHeight() / 2) / AdventureGame.PPM);

        body = world.createBody(bdef);

        shape.setAsBox((rect.getWidth() / 2) / AdventureGame.PPM, (rect.getHeight() / 2) / AdventureGame.PPM);
        fdef.shape = shape;
        fdef.filter.categoryBits = AdventureGame.GROUND_BIT;
        fdef.filter.maskBits = AdventureGame.BULLET_BIT | AdventureGame.PLAYER_BIT
                | AdventureGame.ENEMYBULLET_BIT | AdventureGame.ENEMY_BIT | AdventureGame.DYNAMITE_BIT;
        fdef.isSensor = false;
        body.createFixture(fdef);
    }
    for (MapObject object : map.getLayers().get("Ground").getObjects().getByType(RectangleMapObject.class)) {
        Rectangle rect = ((RectangleMapObject) object).getRectangle();

        bdef.type = BodyDef.BodyType.StaticBody;
        bdef.position.set((rect.getX()) / AdventureGame.PPM,
                (rect.getY() + rect.getHeight()) / AdventureGame.PPM);

        body = world.createBody(bdef);

        EdgeShape shapeFloor = new EdgeShape();

        shapeFloor.set(0, 0, rect.getWidth() / AdventureGame.PPM, 0);
        fdef.shape = shapeFloor;
        fdef.filter.categoryBits = AdventureGame.FLOOR_BIT;
        fdef.filter.maskBits = AdventureGame.BULLET_BIT | AdventureGame.PLAYER_BIT
                | AdventureGame.ENEMYBULLET_BIT | AdventureGame.ENEMY_BIT | AdventureGame.DYNAMITE_BIT;
        fdef.isSensor = false;
        body.createFixture(fdef);
    }

    for (MapObject object : map.getLayers().get("Finish").getObjects().getByType(RectangleMapObject.class)) {
        Rectangle rect = ((RectangleMapObject) object).getRectangle();

        bdef.type = BodyDef.BodyType.StaticBody;
        bdef.position.set((rect.getX() + rect.getWidth() / 2) / AdventureGame.PPM,
                (rect.getY() + rect.getHeight() / 2) / AdventureGame.PPM);

        body = world.createBody(bdef);

        shape.setAsBox((rect.getWidth() / 2) / AdventureGame.PPM, (rect.getHeight() / 2) / AdventureGame.PPM);
        fdef.shape = shape;
        fdef.filter.categoryBits = AdventureGame.FINISH_BIT;
        fdef.filter.maskBits = AdventureGame.PLAYER_BIT;
        fdef.isSensor = true;
        body.createFixture(fdef);
    }

    for (MapObject object : map.getLayers().get("Ground").getObjects().getByType(PolygonMapObject.class)) {

        Polygon pol = ((PolygonMapObject) object).getPolygon();

        bdef.type = BodyDef.BodyType.StaticBody;
        bdef.position.set(pol.getX() / AdventureGame.PPM, (pol.getY()) / AdventureGame.PPM);

        body = world.createBody(bdef);
        body.setLinearDamping(100);

        float[] vert = pol.getVertices();
        for (int i = 0; i < vert.length; i++) {
            vert[i] /= AdventureGame.PPM;
        }

        shape.set(vert);
        fdef.shape = shape;
        fdef.filter.categoryBits = AdventureGame.FLOOR_BIT;
        fdef.filter.maskBits = AdventureGame.BULLET_BIT | AdventureGame.PLAYER_BIT | AdventureGame.DYNAMITE_BIT
                | AdventureGame.ENEMY_BIT;
        fdef.isSensor = false;
        fdef.friction = 0.035f;
        body.createFixture(fdef);

    }

}

From source file:com.strategames.engine.gameobject.types.Balloon.java

License:Open Source License

@Override
protected void setupBody(Body body) {

    /**//ww w.  ja  va  2 s . co m
     * TODO do we really need a separate loader for each object? Replace with static?
     */
    BodyEditorLoader loader = new BodyEditorLoader(Gdx.files.internal("fixtures/balloon.json"));
    loader.setupVertices("Balloon", WIDTH);

    //Balloon body
    body.setAngularDamping(1f);
    body.setLinearDamping(1f);

    FixtureDef fixtureBalloon = new FixtureDef();
    fixtureBalloon.density = 0.1786f; // Helium density 0.1786 g/l == 0.1786 kg/m3
    fixtureBalloon.friction = 0.6f;
    fixtureBalloon.restitution = 0.4f; // Make it bounce a little bit
    loader.attachFixture(body, "Balloon", 0, fixtureBalloon);

    this.upwardLiftPosition = body.getLocalCenter();
    this.upwardLiftPosition.y += 0.1f;

    this.upwardLift = -body.getMass() * this.liftFactor;
}

From source file:io.piotrjastrzebski.sfg.game.objects.PickupDebris.java

License:Open Source License

private Body createBody(World world, int id) {
    final BodyDef obstacleBodyDef = new BodyDef();
    obstacleBodyDef.type = BodyDef.BodyType.DynamicBody;
    final Body body = world.createBody(obstacleBodyDef);
    // large dampening so tiny bodies dont explode super fast
    body.setLinearDamping(0.75f);
    body.setAngularDamping(0.75f);/*from w  ww .j  a v a  2 s  .c  o m*/

    final PolygonShape rect = new PolygonShape();
    rect.setAsBox(WIDTHS[id], HEIGHTS[id]);

    final FixtureDef fixtureDef = new FixtureDef();
    fixtureDef.shape = rect;
    fixtureDef.density = 3f;
    fixtureDef.friction = 0.25f;
    fixtureDef.restitution = 0.25f;
    fixtureDef.filter.categoryBits = Collision.BODY_PART;
    fixtureDef.filter.maskBits = Collision.MASK_BODY_PART;
    body.createFixture(fixtureDef);
    // Clean up
    rect.dispose();
    return body;
}

From source file:io.piotrjastrzebski.sfg.game.objects.PlayerRagDoll.java

License:Open Source License

private Body createBody(World world, int id, float scale) {
    final BodyDef obstacleBodyDef = new BodyDef();
    obstacleBodyDef.type = BodyDef.BodyType.DynamicBody;
    final Body body = world.createBody(obstacleBodyDef);
    // large dampening so tiny bodies dont explode super fast
    body.setLinearDamping(0.75f);
    body.setAngularDamping(0.75f);/*from   w  ww. ja v  a 2  s.co  m*/

    final PolygonShape rect = new PolygonShape();
    rect.setAsBox(WIDTHS[id] * scale, HEIGHTS[id] * scale);

    final FixtureDef fixtureDef = new FixtureDef();
    fixtureDef.shape = rect;
    fixtureDef.density = 3f;
    fixtureDef.friction = 0.25f;
    fixtureDef.restitution = 0.25f;
    fixtureDef.filter.categoryBits = Collision.BODY_PART;
    fixtureDef.filter.maskBits = Collision.MASK_BODY_PART;
    // without this bodies are actually lower than expected when driven by animation
    body.setGravityScale(0);
    body.createFixture(fixtureDef);
    // Clean up
    rect.dispose();
    return body;
}

From source file:rosthouse.rosty.systems.PhysicsSystem.java

public <T extends Shape> PhysicsComponent<T> createPhysicsComponent(BodyDef.BodyType type, T shape,
        Vector2 position, FixtureDef fixture) {
    fixture.shape = shape;//www . ja v a  2  s. c o  m
    bodyDef.position.set(position);
    Body body = world.createBody(bodyDef);
    body.setLinearDamping(0.1f);
    body.setAngularDamping(0.1f);
    body.setType(type);
    return new PhysicsComponent<>(shape, body.createFixture(fixture));
}

From source file:rosthouse.rosty.systems.PhysicsSystem.java

public <T extends Shape> SensorComponent<T> createSensorComponent(BodyDef.BodyType type, T shape,
        Vector2 position, FixtureDef fixture) {
    fixture.shape = shape;//w w  w .jav  a 2s  . c  o m
    fixture.isSensor = true;
    bodyDef.position.set(position);
    Body body = world.createBody(bodyDef);
    body.setLinearDamping(0.1f);
    body.setAngularDamping(0.1f);
    body.setType(type);
    return new SensorComponent<>(shape, body.createFixture(fixture));
}