List of usage examples for com.badlogic.gdx.physics.box2d Body setLinearDamping
public void setLinearDamping(float linearDamping)
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)); }