GammelJan 6 years ago
parent 14cb073dd1
commit 753cf1084f

@ -120,6 +120,21 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
} }
} }
} }
for(Rectangle rect : gs.getObjectRects()){
if(Intersector.overlaps(gs.getProjectileCirc(), rect)) {
collision = true;
if (!isColliding) {
if (rect.getHeight() == 1) {
level[currentLevel].horizontalCollision();
} else if (rect.getWidth() == 1) {
level[currentLevel].verticalCollision();
}
isColliding = true;
break;
}
}
}
if(!collision){ if(!collision){
isColliding = false; isColliding = false;

@ -6,6 +6,7 @@
package model; package model;
import com.badlogic.gdx.math.Polygon; import com.badlogic.gdx.math.Polygon;
import com.badlogic.gdx.math.Rectangle;
import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.math.Vector2;
import com.throwgame.main.ThrowMath; import com.throwgame.main.ThrowMath;
@ -31,7 +32,7 @@ public class Level {
private int traceIndex; private int traceIndex;
public boolean[] isTraceInitialised; public boolean[] isTraceInitialised;
public Vector2[] traces; public Vector2[] traces;
Polygon[] polygons; Rectangle[] objects;
public Level(Goal goal, Projectile projectile, int xPosPivot, int yPosPivot){ public Level(Goal goal, Projectile projectile, int xPosPivot, int yPosPivot){
this.goal = goal; this.goal = goal;
@ -46,8 +47,9 @@ public class Level {
this.angle = 0; this.angle = 0;
this.angleSpeed = 0; this.angleSpeed = 0;
polygons = new Polygon[1]; objects = new Rectangle[2];
polygons[0] = new Polygon(new float[]{500,500,502,500,602,600,600,600}); objects[0] = new Rectangle(500,500,200,50);
objects[1] = new Rectangle(800,500,50,200);
traceIndex = 0; traceIndex = 0;
isTraceInitialised = new boolean[50]; isTraceInitialised = new boolean[50];
@ -149,7 +151,7 @@ public class Level {
public boolean released(){ public boolean released(){
return isReleased; return isReleased;
} }
public Polygon[] getPolygons(){ public Rectangle[] getObjects(){
return polygons; return objects;
} }
} }

@ -17,6 +17,7 @@ import com.badlogic.gdx.math.Rectangle;
import com.badlogic.gdx.math.Polygon; import com.badlogic.gdx.math.Polygon;
import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.math.Vector2;
import java.awt.Point; import java.awt.Point;
import java.util.ArrayList;
import model.Goal; import model.Goal;
import model.Level; import model.Level;
@ -50,7 +51,8 @@ public class Gamescreen{
// 0: Left, 1: LeftTop, 2: CenterLeft, 3: CenterBottom, 4: CenterRight, 5: RightTop, 6: Right, 7: Bottom // 0: Left, 1: LeftTop, 2: CenterLeft, 3: CenterBottom, 4: CenterRight, 5: RightTop, 6: Right, 7: Bottom
float GAME_WORLD_WIDTH; float GAME_WORLD_WIDTH;
float GAME_WORLD_HEIGHT; float GAME_WORLD_HEIGHT;
Polygon[] objects; Rectangle[] objects;
ArrayList<Rectangle> objectRects;
boolean win; boolean win;
@ -60,7 +62,7 @@ public class Gamescreen{
pivotX = level.getPivotX(); pivotX = level.getPivotX();
pivotY = level.getPivotY(); pivotY = level.getPivotY();
g = level.getGoal(); g = level.getGoal();
objects = level.getPolygons(); objects = level.getObjects();
x = g.getxPos(); x = g.getxPos();
y = g.getyPos(); y = g.getyPos();
w = g.getSizeX(); w = g.getSizeX();
@ -70,6 +72,8 @@ public class Gamescreen{
win = false; win = false;
objectRects = new ArrayList<Rectangle>();
goalRects = new Rectangle[8]; goalRects = new Rectangle[8];
@ -82,6 +86,13 @@ public class Gamescreen{
goalRects[6] = new Rectangle(x + w-1 ,y ,1 ,h ); goalRects[6] = new Rectangle(x + w-1 ,y ,1 ,h );
goalRects[7] = new Rectangle(x ,y ,w ,1 ); goalRects[7] = new Rectangle(x ,y ,w ,1 );
for(Rectangle object : objects){
objectRects.add(new Rectangle(object.getX(), object.getY(), 1, object.getHeight()));
objectRects.add(new Rectangle(object.getX(), object.getY() + object.getHeight() - 1, object.getWidth(), 1));
objectRects.add(new Rectangle(object.getX() + object.getWidth()-1, object.getY(), 1, object.getHeight()));
objectRects.add(new Rectangle(object.getX(), object.getY(),object.getWidth(), 1));
}
goalRect = new Rectangle(x + w*th, y + h*th, w * th * 3, h * 0.1f); goalRect = new Rectangle(x + w*th, y + h*th, w * th * 3, h * 0.1f);
projectileCirc = new Circle((float)level.getProjectile().getxPos(), (float)level.getProjectile().getyPos(), level.getProjectile().getRadius()); projectileCirc = new Circle((float)level.getProjectile().getxPos(), (float)level.getProjectile().getyPos(), level.getProjectile().getRadius());
@ -120,21 +131,33 @@ public class Gamescreen{
shapeRenderer.rect(x + th * w,y, th*3 * w,th * h); shapeRenderer.rect(x + th * w,y, th*3 * w,th * h);
shapeRenderer.rect(x + th *w + th*3 * w, y, th * w,h); shapeRenderer.rect(x + th *w + th*3 * w, y, th * w,h);
shapeRenderer.circle((float) p.getxPos(), (float) p.getyPos(), p.getRadius()); shapeRenderer.circle((float) p.getxPos(), (float) p.getyPos(), p.getRadius());
for(Rectangle object : objects){
shapeRenderer.rect(object.getX(), object.getY(), object.getWidth(), object.getHeight());
}
shapeRenderer.setColor(Color.RED); shapeRenderer.setColor(Color.RED);
/* /*
//goal hitboxes //goal hitboxes
for(int i = 0; i < goalRects.length; i++){ for(int i = 0; i < goalRects.length; i++){
shapeRenderer.rect(goalRects[i].getX(), goalRects[i].getY(), goalRects[i].getWidth(), goalRects[i].getHeight()); shapeRenderer.rect(goalRects[i].getX(), goalRects[i].getY(), goalRects[i].getWidth(), goalRects[i].getHeight());
} }
// projectile hitbox // projectile hitbox
shapeRenderer.circle(projectileCirc.x, projectileCirc.y, projectileCirc.radius); shapeRenderer.circle(projectileCirc.x, projectileCirc.y, projectileCirc.radius);
// goal hitbox // goal hitbox
shapeRenderer.setColor(Color.GREEN); shapeRenderer.setColor(Color.GREEN);
shapeRenderer.rect(goalRect.getX(), goalRect.getY(), goalRect.getWidth(), goalRect.getHeight());/* shapeRenderer.rect(goalRect.getX(), goalRect.getY(), goalRect.getWidth(), goalRect.getHeight());
// full goal size hitbox; // full goal size hitbox;
shapeRenderer.rect(g.getxPos(), g.getyPos(), g.getSizeX(), g.getSizeY()); shapeRenderer.rect(g.getxPos(), g.getyPos(), g.getSizeX(), g.getSizeY());
*/ */
// object hitboxes
for(Rectangle object: objectRects){
shapeRenderer.rect(object.getX(), object.getY(), object.getWidth(), object.getHeight());
}
shapeRenderer.setColor(Color.GRAY); shapeRenderer.setColor(Color.GRAY);
shapeRenderer.circle(pivotX, pivotY, 5); shapeRenderer.circle(pivotX, pivotY, 5);
@ -143,12 +166,7 @@ public class Gamescreen{
shapeRenderer.end(); shapeRenderer.end();
shapeRenderer.begin(ShapeRenderer.ShapeType.Line);
shapeRenderer.setColor(Color.BLACK);
for(Polygon object : objects){
shapeRenderer.polygon(objects[0].getVertices());
}
shapeRenderer.end();
} }
@ -173,6 +191,9 @@ public class Gamescreen{
public Circle getProjectileCirc(){ public Circle getProjectileCirc(){
return projectileCirc; return projectileCirc;
} }
public ArrayList<Rectangle> getObjectRects(){
return objectRects;
}
} }

Loading…
Cancel
Save