Skip to content
Snippets Groups Projects
Commit 8e276981 authored by Louis MALTERRE's avatar Louis MALTERRE
Browse files

collisions sur le cote marchent encore pas

parent 2605771e
Branches
No related tags found
No related merge requests found
......@@ -16,7 +16,7 @@ public class Character extends Entity{
private final double impulsionSaut;
private double masse;
private int alpha = 1; // gere les collisions avec le sol
private int beta = 1; // gere les collisions avec les murs
private final double entityWIDTH = 30; // pour l'instant je les ai renommes, ca peut changer
private final double entityHEIGHT = 60;
private Map<String,Double> tableCommande; //table des commandes du perso
......@@ -46,7 +46,8 @@ public class Character extends Entity{
//on se souvient de ses anciennes positions
this.oldCoord = this.getCoord();
newX = tableCommande.get("CommandX")*delta + this.getCoord().getX();
newX = beta*tableCommande.get("CommandX")*delta + this.getCoord().getX();
//if (newX + Math.signum(tableCommande.get("CommandX")*entityWIDTH/2 ))
newZ = ((1-alpha)*Physique.g - tableCommande.get("CommandZ"))/2*delta*delta + vitesseActuZ*delta + this.getCoord().getZ();
......@@ -58,14 +59,14 @@ public class Character extends Entity{
//(tableCommande.get("CommandZ") == 0) this.getCoord().getZ()(tableCommande.get("CommandZ") == 0) &&
this.setCoord(new Coordonnees(newX, newZ)); // on set les nouvelles coordonnees
System.out.println("z = "+this.getCoord().getZ());
//on actualise les vitesses
vitesseActuX = tableCommande.get("CommandX");
vitesseActuX = beta*tableCommande.get("CommandX");
if (alpha == 1) vitesseActuZ = 0;
/*else*/ vitesseActuZ = vitesseActuZ + 7*((1-alpha)*Physique.g - tableCommande.get("CommandZ"))*delta;
System.out.println("vitesse z = "+vitesseActuZ);
......@@ -110,8 +111,24 @@ public class Character extends Entity{
public void checkIfNextToWall(){
if ((Obstacle.collisionDroite(this, Jeu.getObstacleTable()) && tableCommande.get("CommandX") == -vitesseMax) || (Obstacle.collisionGauche(this, Jeu.getObstacleTable()) && tableCommande.get("CommandX") == vitesseMax)){
this.setCoord(new Coordonnees(this.oldCoord.getX(), this.getCoord().getZ()));
beta = 0;
}else {
beta = 1;
}
if (obstacleNextTo != null){
if (tableCommande.get("CommandX") > 0){
if (this.getCoord().getX()+entityWIDTH/2 >= obstacleNextTo.getHitbox().getExtremites().get("HautGauche").getX()){
this.setCoord(new Coordonnees(obstacleNextTo.getHitbox().getExtremites().get("HautGauche").getX()-entityWIDTH/2, this.getCoord().getZ()));
}
}
else if (tableCommande.get("CommandX") < 0){
if (this.getCoord().getX()-entityWIDTH/2 <= obstacleNextTo.getHitbox().getExtremites().get("HautDroite").getX()){
this.setCoord(new Coordonnees(obstacleNextTo.getHitbox().getExtremites().get("HautDroite").getX()+entityWIDTH/2, this.getCoord().getZ()));
}
}
}
}
public void resetCommand(){
......@@ -121,7 +138,7 @@ public class Character extends Entity{
}
public void evolveCharacter(){
System.out.println(alpha);
System.out.println(beta);
getGameCommand();
checkIfOnGround();
//checkIfNextToWall();
......
......@@ -10,7 +10,7 @@ public abstract class Entity {
protected Coordonnees oldCoord;
final double vitesseMax;
protected HitBox hitBox;
protected Obstacle obstacleNextTo = null;
private final double entityWIDTH = 10;
private final double entityHEIGHT = 10;
......@@ -50,6 +50,12 @@ public abstract class Entity {
public void setObstacleBeneath(Obstacle obstacleBeneath) {
this.obstacleBeneath = obstacleBeneath;
}
public Obstacle getObstacleNextTo() {
return obstacleNextTo;
}
public void setObstacleNextTo(Obstacle obstacleNextTo) {
this.obstacleNextTo = obstacleNextTo;
}
}
......@@ -63,7 +63,7 @@ public class HitBox {
return !(A.extremites.get("HautDroite").getX() < B.extremites.get("HautGauche").getX());// A est à gauche de B
}
public static Boolean collisionBas(HitBox A, HitBox B){
System.out.println(A.extremites.get("HautGauche").getZ()+" "+B.extremites.get("BasGauche").getZ());
//System.out.println(A.extremites.get("HautGauche").getZ()+" "+B.extremites.get("BasGauche").getZ());
return !(A.extremites.get("HautGauche").getZ() > B.extremites.get("BasGauche").getZ());// A est en dessous de B
}
public static Boolean collisionHaut(HitBox A, HitBox B){
......
......@@ -53,17 +53,25 @@ public class Obstacle {
public static Boolean collisionGauche(Entity charac,List<Obstacle> list){
for (Obstacle obs : list){
if (HitBox.collisionGauche(charac.getHitBox(), obs.getHitbox()) && obs != Jeu.getSol() && !HitBox.collisionHaut(obs.getHitbox(),charac.getHitBox())) return true;
if (HitBox.collisionGauche(charac.getHitBox(), obs.getHitbox()) && obs != Jeu.getSol() && !HitBox.collisionHaut(obs.getHitbox(),charac.getHitBox())){
charac.setObstacleNextTo(obs);
return true;
}
}
charac.setObstacleNextTo(null);
return false;
}
public static Boolean collisionDroite(Entity charac,List<Obstacle> list){
for (Obstacle obs : list){
if (HitBox.collisionDroite(charac.getHitBox(), obs.getHitbox()) && obs != Jeu.getSol() && !HitBox.collisionHaut(obs.getHitbox(),charac.getHitBox())) return true;
if (HitBox.collisionDroite(charac.getHitBox(), obs.getHitbox()) && obs != Jeu.getSol() && !HitBox.collisionHaut(obs.getHitbox(),charac.getHitBox())) {
charac.setObstacleNextTo(obs);
return true;
}
}
charac.setObstacleNextTo(null);
return false;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment