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){
isColliding = false;

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

@ -17,6 +17,7 @@ import com.badlogic.gdx.math.Rectangle;
import com.badlogic.gdx.math.Polygon;
import com.badlogic.gdx.math.Vector2;
import java.awt.Point;
import java.util.ArrayList;
import model.Goal;
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
float GAME_WORLD_WIDTH;
float GAME_WORLD_HEIGHT;
Polygon[] objects;
Rectangle[] objects;
ArrayList<Rectangle> objectRects;
boolean win;
@ -60,7 +62,7 @@ public class Gamescreen{
pivotX = level.getPivotX();
pivotY = level.getPivotY();
g = level.getGoal();
objects = level.getPolygons();
objects = level.getObjects();
x = g.getxPos();
y = g.getyPos();
w = g.getSizeX();
@ -70,6 +72,8 @@ public class Gamescreen{
win = false;
objectRects = new ArrayList<Rectangle>();
goalRects = new Rectangle[8];
@ -82,6 +86,13 @@ public class Gamescreen{
goalRects[6] = new Rectangle(x + w-1 ,y ,1 ,h );
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);
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 + th*3 * w, y, th * w,h);
shapeRenderer.circle((float) p.getxPos(), (float) p.getyPos(), p.getRadius());
shapeRenderer.setColor(Color.RED);
for(Rectangle object : objects){
shapeRenderer.rect(object.getX(), object.getY(), object.getWidth(), object.getHeight());
}
shapeRenderer.setColor(Color.RED);
/*
//goal hitboxes
for(int i = 0; i < goalRects.length; i++){
shapeRenderer.rect(goalRects[i].getX(), goalRects[i].getY(), goalRects[i].getWidth(), goalRects[i].getHeight());
}
// projectile hitbox
shapeRenderer.circle(projectileCirc.x, projectileCirc.y, projectileCirc.radius);
// goal hitbox
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;
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.circle(pivotX, pivotY, 5);
@ -143,12 +166,7 @@ public class Gamescreen{
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(){
return projectileCirc;
}
public ArrayList<Rectangle> getObjectRects(){
return objectRects;
}
}

Loading…
Cancel
Save