private void definePlayer() { BodyDef bodyDef = new BodyDef(); bodyDef.position.set(32 / Gyaya.PPM, 32 / Gyaya.PPM); bodyDef.type = BodyDef.BodyType.DynamicBody; b2body = world.createBody(bodyDef); FixtureDef fixtureDef = new FixtureDef(); CircleShape shape = new CircleShape(); shape.setRadius(8f / Gyaya.PPM); fixtureDef.filter.categoryBits = Gyaya.PLAYER_BIT; fixtureDef.filter.maskBits = Gyaya.GROUND_BIT | Gyaya.BRICK_BIT | Gyaya.COIN_BIT | Gyaya.OBJECT_BIT | Gyaya.ENEMY_BIT | Gyaya.ENEMY_HEAD_BIT; fixtureDef.shape = shape; b2body.createFixture(fixtureDef); shape.setPosition(new Vector2(0, 4 / Gyaya.PPM)); shape.setRadius(6f / Gyaya.PPM); b2body.createFixture(fixtureDef); EdgeShape head = new EdgeShape(); head.set( new Vector2(-3 / Gyaya.PPM, 10f / Gyaya.PPM), new Vector2(3 / Gyaya.PPM, 10f / Gyaya.PPM)); fixtureDef.shape = head; fixtureDef.isSensor = true; b2body.createFixture(fixtureDef).setUserData("head"); EdgeShape feet = new EdgeShape(); feet.set( new Vector2(-6 / Gyaya.PPM, -9f / Gyaya.PPM), new Vector2(6 / Gyaya.PPM, -9f / Gyaya.PPM)); fixtureDef.shape = feet; fixtureDef.isSensor = true; b2body.createFixture(fixtureDef).setUserData("feet"); }
@Override public void resize(int width, int height) { PPuX = width / 10; System.out.println("width = " + width); System.out.println("height = " + height); PPuY = height / 10; world = new World(new Vector2(0, -9.8f), false); renderer = new Box2DDebugRenderer(); camera = new OrthographicCamera(width, height); debugMatrix = new Matrix4(camera.combined); Circle.setBounds( Circle.getX() * PPuX, Circle.getY() * PPuY, Circle.getWidth() * PPuX, Circle.getHeight() * PPuY); Circle.setOrigin(Circle.getWidth() / 2, Circle.getHeight() / 2); BodyDef circleDef = new BodyDef(); circleDef.type = BodyType.DynamicBody; // To allign the Circle sprite with box 2d circleDef.position.set( convertToBox(Circle.getX() + Circle.getWidth() / 2), convertToBox(Circle.getY() + Circle.getHeight() / 2)); circleBody = world.createBody(circleDef); // box2d builds around 0,0 you can see -X and -Y, this makes sure that you only see X,Y debugMatrix.translate(-camera.viewportWidth / 2, -camera.viewportHeight / 2, 0); // scale the debug matrix by the scaling so everything looks normal debugMatrix.scale(BOX_TO_WORLD, BOX_TO_WORLD, 0); circleShape = new CircleShape(); circleShape.setRadius(convertToBox(Circle.getWidth() / 2)); FixtureDef circleFixture = new FixtureDef(); circleFixture.shape = circleShape; circleFixture.density = 0.4f; circleFixture.friction = 0.2f; circleFixture.restitution = 1f; circleBody.createFixture(circleFixture); circleBody.setUserData(Circle); // create ground BodyDef groundDef = new BodyDef(); groundDef.position.set(convertToBox(camera.viewportWidth / 2), 0); Body groundBody = world.createBody(groundDef); PolygonShape groundBox = new PolygonShape(); groundBox.setAsBox(convertToBox(camera.viewportWidth / 2), 0); groundBody.createFixture(groundBox, 0); BodyDef def = new BodyDef(); def.type = BodyType.DynamicBody; def.position.set(0, 0); Body box = world.createBody(def); PolygonShape poly = new PolygonShape(); poly.setAsBox(0.1f, 0.2f); playerPhysicsFixture = box.createFixture(poly, 1); poly.dispose(); CircleShape circle = new CircleShape(); circle.setRadius(0.1f); circle.setPosition(new Vector2(0, -0.2f)); playerSensorFixture = box.createFixture(circle, 0); circle.dispose(); box.setBullet(true); player = box; player.setTransform(1.0f, 2.0f, 0); player.setFixedRotation(true); }