From 794d88a45de881ef84b91b697a9445702505a065 Mon Sep 17 00:00:00 2001 From: ALGLAVE Ivan <ivan.alglave8@etu.univ-lorraine.fr> Date: Sun, 20 Dec 2020 14:54:14 +0100 Subject: [PATCH] Fixed position to displaying objects as being centered with coordinates, added joysticks - non functionnal --- .../com/mygdx/game/GameScreens/GamePlay.java | 8 ++++ core/src/com/mygdx/game/bodies/Field.java | 2 +- core/src/com/mygdx/game/bodies/Joystick.java | 46 +++++++++++++++++++ .../com/mygdx/game/bodies/TextureBody.java | 2 +- 4 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 core/src/com/mygdx/game/bodies/Joystick.java diff --git a/core/src/com/mygdx/game/GameScreens/GamePlay.java b/core/src/com/mygdx/game/GameScreens/GamePlay.java index 2b7a454..e43d10d 100644 --- a/core/src/com/mygdx/game/GameScreens/GamePlay.java +++ b/core/src/com/mygdx/game/GameScreens/GamePlay.java @@ -17,6 +17,7 @@ import com.badlogic.gdx.physics.box2d.Shape; import com.badlogic.gdx.physics.box2d.World; import com.mygdx.game.bodies.Ball; import com.mygdx.game.bodies.Field; +import com.mygdx.game.bodies.Joystick; import com.mygdx.game.bodies.Player; /** @@ -29,6 +30,7 @@ public class GamePlay extends GameScreen Player pleft, pright; Field field; World world; + Joystick jleft, jright; Box2DDebugRenderer b2dd; @@ -40,6 +42,8 @@ public class GamePlay extends GameScreen ball = new Ball(world, new Vector2(Gdx.graphics.getWidth()/2f, Gdx.graphics.getHeight()/2f)); pleft = new Player(world, Player.TYPE.LEFT); pright = new Player(world, Player.TYPE.RIGHT); + jleft = new Joystick(world, Joystick.SIDE.LEFT); + jright = new Joystick(world, Joystick.SIDE.RIGHT); } @Override @@ -54,6 +58,10 @@ public class GamePlay extends GameScreen ball.draw(batch); + jleft.draw(batch); + + jright.draw(batch); + world.step(delta, 1, 1); super.render(delta); diff --git a/core/src/com/mygdx/game/bodies/Field.java b/core/src/com/mygdx/game/bodies/Field.java index 8c51c24..72a7258 100644 --- a/core/src/com/mygdx/game/bodies/Field.java +++ b/core/src/com/mygdx/game/bodies/Field.java @@ -20,7 +20,7 @@ public class Field BodyDef bdef = new BodyDef(); bdef.type = BodyDef.BodyType.StaticBody; bdef.active = false; - bdef.position.set(Gdx.graphics.getWidth()*0.1f, 0); + bdef.position.set(Gdx.graphics.getWidth()*0.5f, Gdx.graphics.getHeight()*0.5f); FixtureDef fdef = new FixtureDef(); diff --git a/core/src/com/mygdx/game/bodies/Joystick.java b/core/src/com/mygdx/game/bodies/Joystick.java new file mode 100644 index 0000000..4a9f4ca --- /dev/null +++ b/core/src/com/mygdx/game/bodies/Joystick.java @@ -0,0 +1,46 @@ +package com.mygdx.game.bodies; + +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.graphics.g2d.SpriteBatch; +import com.badlogic.gdx.math.Vector2; +import com.badlogic.gdx.physics.box2d.BodyDef; +import com.badlogic.gdx.physics.box2d.CircleShape; +import com.badlogic.gdx.physics.box2d.FixtureDef; +import com.badlogic.gdx.physics.box2d.World; + +public class Joystick +{ + private TextureBody tb; + + public Joystick(World world, SIDE side) + { + BodyDef bdef = new BodyDef(); + bdef.type = BodyDef.BodyType.StaticBody; + Vector2 pos = side == SIDE.RIGHT ? new Vector2(Gdx.graphics.getWidth()*0.95f, Gdx.graphics.getHeight()/2f) : new Vector2(Gdx.graphics.getWidth()*0.05f, Gdx.graphics.getHeight()/2f); + bdef.position.set(pos); + + FixtureDef fdef = new FixtureDef(); + + CircleShape cs = new CircleShape(); + cs.setRadius(Gdx.graphics.getWidth() * (1f/40f)); + + fdef.shape = cs; + fdef.density = 0f; + fdef.restitution = 0f; + fdef.friction = 0f; + + bdef.active = false; + + tb = new TextureBody(Gdx.files.internal( "images/Pad.png"), world, bdef, fdef, Gdx.graphics.getWidth()*0.1f, Gdx.graphics.getWidth()*0.1f); + } + + public void draw(SpriteBatch batch) + { + tb.draw(batch); + } + + public enum SIDE + { + LEFT, RIGHT + } +} diff --git a/core/src/com/mygdx/game/bodies/TextureBody.java b/core/src/com/mygdx/game/bodies/TextureBody.java index 9f08850..e430d05 100644 --- a/core/src/com/mygdx/game/bodies/TextureBody.java +++ b/core/src/com/mygdx/game/bodies/TextureBody.java @@ -27,6 +27,6 @@ public class TextureBody extends Texture public void draw(SpriteBatch batch) { - batch.draw(this, body.getPosition().x, body.getPosition().y, width, height); + batch.draw(this, body.getPosition().x - width/2f, body.getPosition().y - height/2f, width, height); } } -- GitLab