Skip to content
Snippets Groups Projects
Commit e5f96fee authored by Magnus Segtnan Skjølberg's avatar Magnus Segtnan Skjølberg
Browse files

(#34): methods for rotating cannon in tank

parent ec06f67e
No related branches found
No related tags found
2 merge requests!51Resolve "Adjust cannon angle from touch input",!35Draft: Resolve "Adjust cannon angle from touch input"
Pipeline #214303 failed
...@@ -2,6 +2,8 @@ package com.game.tankwars.controller; ...@@ -2,6 +2,8 @@ package com.game.tankwars.controller;
import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input; import com.badlogic.gdx.Input;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.math.Vector3;
import com.badlogic.gdx.scenes.scene2d.Actor; import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.scenes.scene2d.InputEvent; import com.badlogic.gdx.scenes.scene2d.InputEvent;
import com.badlogic.gdx.scenes.scene2d.InputListener; import com.badlogic.gdx.scenes.scene2d.InputListener;
...@@ -21,6 +23,8 @@ public class GameController { ...@@ -21,6 +23,8 @@ public class GameController {
private Bullet bullet; private Bullet bullet;
private Vector3 touchPos;
private boolean moveRightTouched; private boolean moveRightTouched;
private boolean moveLeftTouched; private boolean moveLeftTouched;
...@@ -28,6 +32,8 @@ public class GameController { ...@@ -28,6 +32,8 @@ public class GameController {
this.hud = hud; this.hud = hud;
this.tank = tank; this.tank = tank;
this.tankWarsGame = tankWarsGame; this.tankWarsGame = tankWarsGame;
this.touchPos = new Vector3();
} }
public void checkKeyInput(Tank tank){ public void checkKeyInput(Tank tank){
...@@ -96,6 +102,16 @@ public class GameController { ...@@ -96,6 +102,16 @@ public class GameController {
} }
public void handleTouchInput(OrthographicCamera camera) {
if(Gdx.input.isTouched()) {
touchPos.set(Gdx.input.getX(), Gdx.input.getY(), 0);
camera.unproject(touchPos);
tank.rotateCannon(touchPos);
}
}
public boolean endPlayerTurn() { public boolean endPlayerTurn() {
System.out.println(tank.getPower()); System.out.println(tank.getPower());
System.out.println(tank.getPosition()); System.out.println(tank.getPosition());
......
...@@ -3,8 +3,10 @@ package com.game.tankwars.model; ...@@ -3,8 +3,10 @@ package com.game.tankwars.model;
import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.Sprite; import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.math.MathUtils;
import com.badlogic.gdx.math.Rectangle; import com.badlogic.gdx.math.Rectangle;
import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.math.Vector3;
import com.badlogic.gdx.physics.box2d.Body; import com.badlogic.gdx.physics.box2d.Body;
import com.badlogic.gdx.physics.box2d.BodyDef; import com.badlogic.gdx.physics.box2d.BodyDef;
import com.badlogic.gdx.physics.box2d.FixtureDef; import com.badlogic.gdx.physics.box2d.FixtureDef;
...@@ -161,6 +163,21 @@ public class Tank { ...@@ -161,6 +163,21 @@ public class Tank {
} }
} }
public void rotateCannon(Vector3 touchPos) {
if(cannonAngle > 90 || cannonAngle < -90) {
return;
}
cannonAngle = calculateAngleFromTouch(touchPos);
}
private float calculateAngleFromTouch(Vector3 touchPos) {
System.out.println(touchPos.toString());
float angle = (MathUtils.atan2(touchPos.y, touchPos.x)) - (MathUtils.atan2(chassis.getPosition().y, chassis.getPosition().x));
angle *= MathUtils.radiansToDegrees;
System.out.println(angle);
return angle;
}
public float getCannonAngle(){ public float getCannonAngle(){
return cannonAngle; return cannonAngle;
} }
......
...@@ -106,6 +106,8 @@ public class GameScreen implements Screen { ...@@ -106,6 +106,8 @@ public class GameScreen implements Screen {
controller.checkKeyInput(myTank); controller.checkKeyInput(myTank);
controller.handleTouchInput(worldCam);
Array<Body> bodies = new Array<Body>(); Array<Body> bodies = new Array<Body>();
world.getBodies(bodies); world.getBodies(bodies);
...@@ -114,7 +116,7 @@ public class GameScreen implements Screen { ...@@ -114,7 +116,7 @@ public class GameScreen implements Screen {
Sprite s = (Sprite) b.getUserData(); Sprite s = (Sprite) b.getUserData();
if (s != null) { if (s != null) {
s.setPosition(b.getPosition().x * (float) horizontalScaling - s.getWidth() / 2, (b.getPosition().y + 0.25f) * (float) verticalScaling); s.setPosition(b.getPosition().x * (float) TankWarsGame.SCALE - s.getWidth() / 2, (b.getPosition().y + 0.25f) * (float) TankWarsGame.SCALE);
if (s.equals(myTank.getChassisSprite())) { if (s.equals(myTank.getChassisSprite())) {
s.setRotation(myTank.getAngle()); s.setRotation(myTank.getAngle());
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment