diff --git a/MAVENProject/src/main/java/entity/Character.java b/MAVENProject/src/main/java/entity/Character.java index deb6505ea893390441f839b6be5b3b7e32f8d1c6..532583a39b049b86ea05f09b8005c3dc02bf1dfb 100644 --- a/MAVENProject/src/main/java/entity/Character.java +++ b/MAVENProject/src/main/java/entity/Character.java @@ -1,6 +1,7 @@ package entity; import java.util.HashMap; +import java.util.List; import java.util.Map; import environnement.Coordonnees; @@ -53,7 +54,7 @@ public class Character extends Entity{ newZ = ((1-alpha)*Physique.g - tableCommande.get("CommandZ"))/2*delta*delta + vitesseActuZ*delta + this.getCoord().getZ(); if (newZ+entityHEIGHT/2 >= obstacleBeneath.getHitbox().getExtremites().get("HautGauche").getZ()){ - newZ = obstacleBeneath.getHitbox().getExtremites().get("HautGauche").getZ()-entityHEIGHT/2+1; + newZ = obstacleBeneath.getHitbox().getExtremites().get("HautGauche").getZ()-entityHEIGHT/2; //alpha = 1; } @@ -61,7 +62,7 @@ public class Character extends Entity{ this.setCoord(new Coordonnees(newX, newZ)); // on set les nouvelles coordonnees - if (obstacleNextTo != null){ + /*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())); @@ -72,7 +73,7 @@ public class Character extends Entity{ this.setCoord(new Coordonnees(obstacleNextTo.getHitbox().getExtremites().get("HautDroite").getX()+entityWIDTH/2, this.getCoord().getZ())); } } - } + }*/ //on actualise les vitesses @@ -80,11 +81,19 @@ public class Character extends Entity{ if (alpha == 1) vitesseActuZ = 0; /*else*/ vitesseActuZ = vitesseActuZ + 7*((1-alpha)*Physique.g - tableCommande.get("CommandZ"))*delta; - - - } + + public void collisionGestion(){ + + //collisionMap = HitBox.collisionMap(this.hitBox, obs.getHitbox()); + checkIfOnGround(Jeu.getObstacleTable()); + /*for (Obstacle obs : Jeu.getObstacleTable()){ + if (obs != Jeu.getSol()){ + + } + }*/ + } @Override public void attaque(){ @@ -104,18 +113,19 @@ public class Character extends Entity{ } } - public void checkIfOnGround(){ // faut modifier la condition pour la gestion de colisions avec le sol - obstacleBeneathCharacter(); // cherche l'obstacle en-dessous du personnage - if (!Obstacle.collisionBas(this)){ + public void checkIfOnGround(List<Obstacle> liste){ // faut modifier la condition pour la gestion de colisions avec le sol + obstacleBeneathCharacter(liste); // cherche l'obstacle en-dessous du personnage + System.out.println(!Obstacle.collisionBas(this)); + if (!Obstacle.collisionBas(this)){ // revoir car on rentre tjr dans cette condition alpha = 0; } else alpha = 1; } - public void obstacleBeneathCharacter(){ + public void obstacleBeneathCharacter(List<Obstacle> liste){ Obstacle obsMin = Jeu.getSol(); - for (Obstacle obs : Jeu.getObstacleTable()){ - if (obs != Jeu.getSol() && obs.getHitbox().getExtremites().get("HautDroite").getZ() >= this.getCoord().getZ() && HitBox.collisionDroite(hitBox, obs.getHitbox()) && HitBox.collisionGauche(hitBox, obs.getHitbox())){ + for (Obstacle obs : liste){ + if (obs != Jeu.getSol() && obs.getHitbox().getExtremites().get("HautDroite").getZ() >= this.getCoord().getZ()+entityHEIGHT/2 && HitBox.collisionMap(this.getHitBox(), obs.getHitbox()).get("collision_droite") && HitBox.collisionMap(this.getHitBox(), obs.getHitbox()).get("collision_gauche")){ if (obs.getHitbox().getExtremites().get("HautDroite").getZ() < obsMin.getHitbox().getExtremites().get("HautDroite").getZ()){ obsMin = obs; } @@ -123,7 +133,7 @@ public class Character extends Entity{ }obstacleBeneath = obsMin; } - public void checkIfNextToWall(){ + /*public void checkIfNextToWall(HashMap<String,Boolean> collisionMap){ if (((HitBox.collisionDroite(this.getHitBox(), Painter.test.getHitbox()) && tableCommande.get("CommandX") == -vitesseMax)) || (HitBox.collisionGauche(this.getHitBox(), Painter.test.getHitbox()) && tableCommande.get("CommandX") == vitesseMax)){ beta = 0; obstacleNextTo = Painter.test; @@ -138,7 +148,7 @@ public class Character extends Entity{ - } + }*/ public void resetCommand(){ for (String key : tableCommande.keySet()){ @@ -148,8 +158,9 @@ public class Character extends Entity{ public void evolveCharacter(){ getGameCommand(); - checkIfNextToWall(); - checkIfOnGround(); + collisionGestion(); + //checkIfNextToWall(); + //checkIfOnGround(); //checkIfNextToWall(); deplacements(); //checkIfNextToWall(); diff --git a/MAVENProject/src/main/java/environnement/HitBox.java b/MAVENProject/src/main/java/environnement/HitBox.java index aaed05965d09272715c491ad9b5d3daf79208166..a0218eae6d42767d5c723f012e7c7db32767728d 100644 --- a/MAVENProject/src/main/java/environnement/HitBox.java +++ b/MAVENProject/src/main/java/environnement/HitBox.java @@ -47,10 +47,10 @@ public class HitBox { public static HashMap<String,Boolean> collisionMap(HitBox A, HitBox B){ // lignes sautées pour raison de lisibilité HashMap<String,Boolean> map = new HashMap<>(); - Boolean a = !(A.extremites.get("HautGauche").getX() >= B.extremites.get("HautDroite").getX()); // A est à droite de B - Boolean b = !(A.extremites.get("HautDroite").getX() <= B.extremites.get("HautGauche").getX()); // A est à gauche de B - Boolean c = !(A.extremites.get("HautGauche").getZ() >= B.extremites.get("BasGauche").getZ()); // A est en dessous de B - Boolean d = !(A.extremites.get("BasGauche").getZ() <= B.extremites.get("HautGauche").getZ()); // A est au dessus de B + Boolean a = !(A.extremites.get("HautGauche").getX() > B.extremites.get("HautDroite").getX()); // A est à droite de B + Boolean b = !(A.extremites.get("HautDroite").getX() < B.extremites.get("HautGauche").getX()); // A est à gauche de B + Boolean c = !(A.extremites.get("HautGauche").getZ() > B.extremites.get("BasGauche").getZ()); // A est en dessous de B + Boolean d = !(A.extremites.get("BasGauche").getZ() < B.extremites.get("HautGauche").getZ()); // A est au dessus de B map.put("collision_gauche",a); map.put("collision_droite",b); map.put("collision_bas",c); @@ -59,11 +59,11 @@ public class HitBox { } public static Boolean collision(HitBox A, HitBox B){ - Boolean a = !(A.extremites.get("HautGauche").getX() >= B.extremites.get("HautDroite").getX()); // A est à droite de B - Boolean b = !(A.extremites.get("HautDroite").getX() <= B.extremites.get("HautGauche").getX()); // A est à gauche de B - Boolean c = !(A.extremites.get("HautGauche").getZ() >= B.extremites.get("BasGauche").getZ()); // A est en dessous de B - Boolean d = !(A.extremites.get("BasGauche").getZ() <= B.extremites.get("HautGauche").getZ()); // A est au dessus de B - return !(a && b && c && d); + Boolean a = (A.extremites.get("HautGauche").getX() > B.extremites.get("HautDroite").getX()); // A est à droite de B + Boolean b = (A.extremites.get("HautDroite").getX() < B.extremites.get("HautGauche").getX()); // A est à gauche de B + Boolean c = (A.extremites.get("HautGauche").getZ() > B.extremites.get("BasGauche").getZ()); // A est en dessous de B + Boolean d = (A.extremites.get("BasGauche").getZ() < B.extremites.get("HautGauche").getZ()); // A est au dessus de B + return (!a && !b && !c && !d); } public HashMap<String, Coordonnees> getExtremites() { return extremites; diff --git a/MAVENProject/src/main/java/jeu/Jeu.java b/MAVENProject/src/main/java/jeu/Jeu.java index 83cbab2da7224afc946516784db4f2742b2af898..8e9dff0a0771f769db78a3bea72ec319cffc7535 100644 --- a/MAVENProject/src/main/java/jeu/Jeu.java +++ b/MAVENProject/src/main/java/jeu/Jeu.java @@ -116,6 +116,7 @@ public class Jeu implements Game{ boolean Jump = command.get("Jump"); boolean Attack = command.get("Attack"); + //perso evolue dans le jeu (en actualisant ses coordonnees) gameCharacter.evolveCharacter(); diff --git a/MAVENProject/src/main/java/map/Obstacle.java b/MAVENProject/src/main/java/map/Obstacle.java index 8cc4e2067000cda771135d26830aa63b3364a357..1672d91d56002b1584e670fcd017cf47f8d0b5f1 100644 --- a/MAVENProject/src/main/java/map/Obstacle.java +++ b/MAVENProject/src/main/java/map/Obstacle.java @@ -1,5 +1,6 @@ package map; +import java.util.HashMap; import java.util.List; import entity.Entity; import environnement.HitBox; @@ -41,17 +42,18 @@ public class Obstacle { }*/ public static Boolean collisionBas(Entity charac){ + HashMap<String,Boolean> collisionMap = HitBox.collisionMap(charac.getHitBox(), charac.getObstacleBeneath().getHitbox()); if (charac.getObstacleBeneath() != Jeu.getSol()){ - if (HitBox.collisionDroite(charac.getHitBox(),charac.getObstacleBeneath().getHitbox()) && HitBox.collisionGauche(charac.getHitBox(),charac.getObstacleBeneath().getHitbox()) && HitBox.collisionBas(charac.getObstacleBeneath().getHitbox(),charac.getHitBox())) { + if (collisionMap.get("collision_droite") && collisionMap.get("collision_gauche") && !collisionMap.get("collision_bas")) { return true; } }else{ - if (HitBox.collisionBas(charac.getObstacleBeneath().getHitbox(),charac.getHitBox())) return true; + if (!collisionMap.get("collision_bas")) return true; } return false; } - public static Boolean collisionGauche(Entity charac,List<Obstacle> list){ + /*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())){ charac.setObstacleNextTo(obs); @@ -73,5 +75,5 @@ public class Obstacle { } charac.setObstacleNextTo(null); return false; - } + }*/ }