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;
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);
......@@ -114,7 +116,7 @@ public class GameScreen implements Screen {
Sprite s = (Sprite) b.getUserData();
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())) {
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