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

(#34): methods for rotating cannon in tank

parent 9cae767e
No related branches found
No related tags found
1 merge request!41Draft: Rotating cannon with touch input
Pipeline #214864 passed
...@@ -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);
......
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