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;
import com.badlogic.gdx.Gdx;
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.InputEvent;
import com.badlogic.gdx.scenes.scene2d.InputListener;
......@@ -21,6 +23,8 @@ public class GameController {
private Bullet bullet;
private Vector3 touchPos;
private boolean moveRightTouched;
private boolean moveLeftTouched;
......@@ -28,6 +32,8 @@ public class GameController {
this.hud = hud;
this.tank = tank;
this.tankWarsGame = tankWarsGame;
this.touchPos = new Vector3();
}
public void checkKeyInput(Tank tank){
......@@ -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() {
System.out.println(tank.getPower());
System.out.println(tank.getPosition());
......
......@@ -3,8 +3,10 @@ package com.game.tankwars.model;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.math.MathUtils;
import com.badlogic.gdx.math.Rectangle;
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.BodyDef;
import com.badlogic.gdx.physics.box2d.FixtureDef;
......@@ -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(){
return cannonAngle;
}
......
......@@ -106,6 +106,8 @@ public class GameScreen implements Screen {
controller.checkKeyInput(myTank);
controller.handleTouchInput(worldCam);
Array<Body> bodies = new Array<Body>();
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