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

en fait y'a tjr le pb sur les cotes des piles de blocs (car j'ai perdu le code faisant ca jsp pk)

donc le plus simple c est la deuxieme solution Louis. LM
parent 90e98a03
Branches
No related tags found
No related merge requests found
...@@ -57,10 +57,8 @@ public class Character extends Entity{ ...@@ -57,10 +57,8 @@ public class Character extends Entity{
newX = tableCommande.get("CommandX")*delta + this.getCoord().getX(); newX = tableCommande.get("CommandX")*delta + this.getCoord().getX();
newZ = ((1-alpha)*Physique.g - tableCommande.get("CommandZ"))/2*delta*delta + vitesseActuZ*delta + this.getCoord().getZ(); newZ = ((1-alpha)*Physique.g - tableCommande.get("CommandZ"))/2*delta*delta + vitesseActuZ*delta + this.getCoord().getZ();
this.setCoord(new Coordonnees((int)newX, (int)newZ));
this.setCoord(new Coordonnees(newX, newZ)); // on set les nouvelles coordonnees
//on actualise les vitesses //on actualise les vitesses
vitesseActuX = tableCommande.get("CommandX"); vitesseActuX = tableCommande.get("CommandX");
...@@ -68,7 +66,9 @@ public class Character extends Entity{ ...@@ -68,7 +66,9 @@ public class Character extends Entity{
direction = (int) Math.signum(vitesseActuX); direction = (int) Math.signum(vitesseActuX);
} }
vitesseActuZ = vitesseActuZ + 8*((1-alpha)*Physique.g - tableCommande.get("CommandZ"))*delta; vitesseActuZ = vitesseActuZ + 10*((1-alpha)*Physique.g - tableCommande.get("CommandZ"))*delta;
//System.out.println(vitesseActuZ);
if (Math.abs(vitesseActuZ) > vitesseMax*500)vitesseActuZ = Math.signum(vitesseActuZ)*vitesseMax*500;
} }
public void collisionGestion(){ public void collisionGestion(){
...@@ -83,13 +83,19 @@ public class Character extends Entity{ ...@@ -83,13 +83,19 @@ public class Character extends Entity{
collisionsPresentes.put(listeObstaclesInVoisinage.get(i),posCol); collisionsPresentes.put(listeObstaclesInVoisinage.get(i),posCol);
} }
//on gere celles du bas
//on set alpha a 0 (on suppose qu'il est en l'air) //on set alpha a 0 (on suppose qu'il est en l'air)
alpha = 0; alpha = 0;
if (this.hitBox.getExtremites().get("BasDroite").getZ()+entityHEIGHT/2-obstacleBeneath.getHitbox().getExtremites().get("HautDroite").getZ()>-1 && this.coord.getX()>=obstacleBeneath.getHitbox().getExtremites().get("BasGauche").getX() && this.coord.getX()<=obstacleBeneath.getHitbox().getExtremites().get("BasDroite").getX()) {
if (this.hitBox.getExtremites().get("BasDroite").getZ()+entityHEIGHT/2-obstacleBeneath.getHitbox().getExtremites().get("HautDroite").getZ()>=-1 && this.hitBox.getExtremites().get("HautDroite").getX()>obstacleBeneath.getHitbox().getExtremites().get("BasGauche").getX() && this.hitBox.getExtremites().get("HautGauche").getX()<obstacleBeneath.getHitbox().getExtremites().get("BasDroite").getX()) {
alpha = 1; alpha = 1;
} }
else { else {
//par defaut l'obstacle en dessous c'est le sol
obstacleBeneath=Jeu.sol; obstacleBeneath=Jeu.sol;
//on parcourt pour tester si il est sur un block //on parcourt pour tester si il est sur un block
for (int i=0;i<collisionsPresentes.size();i++){ for (int i=0;i<collisionsPresentes.size();i++){
...@@ -102,13 +108,25 @@ public class Character extends Entity{ ...@@ -102,13 +108,25 @@ public class Character extends Entity{
this.setCoord(new Coordonnees(this.getCoord().getX(), getObstacleTable().get(i).getHitbox().getExtremites().get("HautGauche").getZ()-entityHEIGHT/2-1)); this.setCoord(new Coordonnees(this.getCoord().getX(), getObstacleTable().get(i).getHitbox().getExtremites().get("HautGauche").getZ()-entityHEIGHT/2-1));
obstacleBeneath=listeObstaclesInVoisinage.get(i); obstacleBeneath=listeObstaclesInVoisinage.get(i);
alpha = 1; alpha = 1;
break; break;
} }
} }
/*for (Obstacle obs : listeObstaclesInVoisinage){ //on cherche l'obstacle en-dessous du perso
if (obs.getHitbox().getExtremites().get("HautGauche").getZ() <= obstacleBeneath.getHitbox().getExtremites().get("HautGauche").getZ() && obs.getHitbox().getExtremites().get("HautGauche").getZ() >= hitBox.getExtremites().get("BasDroite").getZ()){
obstacleBeneath = obs;
}
}
if (collisionsPresentes.get(obstacleBeneath) == BAS && tableCommande.get("CommandAttack") == 0){
this.vitesseActuZ = 0;
this.setCoord(new Coordonnees(this.getCoord().getX(), obstacleBeneath.getHitbox().getExtremites().get("HautGauche").getZ()-entityHEIGHT/2-1));
alpha = 1;
onGround = true;
}*/
} }
//on gere les collisions laterales et celle du haut //on gere les collisions laterales et celle du haut
for (int i=0;i<collisionsPresentes.size();i++){ for (int i=0;i<collisionsPresentes.size();i++){
...@@ -116,12 +134,15 @@ public class Character extends Entity{ ...@@ -116,12 +134,15 @@ public class Character extends Entity{
this.setCoord(new Coordonnees(listeObstaclesInVoisinage.get(i).getHitbox().getExtremites().get("HautDroite").getX()+entityWIDTH/2+1, this.getCoord().getZ())); this.setCoord(new Coordonnees(listeObstaclesInVoisinage.get(i).getHitbox().getExtremites().get("HautDroite").getX()+entityWIDTH/2+1, this.getCoord().getZ()));
break; break;
} }
else if (collisionsPresentes.get(listeObstaclesInVoisinage.get(i)) == GAUCHE && this.vitesseActuX > 0){ else if (collisionsPresentes.get(listeObstaclesInVoisinage.get(i)) == GAUCHE && this.vitesseActuX > 0){
this.setCoord(new Coordonnees(listeObstaclesInVoisinage.get(i).getHitbox().getExtremites().get("HautGauche").getX()-entityWIDTH/2-1, this.getCoord().getZ())); this.setCoord(new Coordonnees(listeObstaclesInVoisinage.get(i).getHitbox().getExtremites().get("HautGauche").getX()-entityWIDTH/2-1, this.getCoord().getZ()));
break; break;
} }
} }
//celles du haut
for (int i=0;i<collisionsPresentes.size();i++){ for (int i=0;i<collisionsPresentes.size();i++){
if (collisionsPresentes.get(listeObstaclesInVoisinage.get(i)) == HAUT){ if (collisionsPresentes.get(listeObstaclesInVoisinage.get(i)) == HAUT){
this.vitesseActuZ = 0; this.vitesseActuZ = 0;
...@@ -195,8 +216,9 @@ public class Character extends Entity{ ...@@ -195,8 +216,9 @@ public class Character extends Entity{
getGameCommand(); getGameCommand();
deplacements(); deplacements();
collisionGestion(); collisionGestion();
//System.out.println(obstacleBeneath);
keyGestion(); keyGestion();
//updateVoisinage(); updateVoisinage();
this.setHitBox(new HitBox(this.getCoord(),entityHEIGHT,entityWIDTH)); // mise à jour moins crade pour l'instant this.setHitBox(new HitBox(this.getCoord(),entityHEIGHT,entityWIDTH)); // mise à jour moins crade pour l'instant
if (tableCommande.get("CommandAttack") == 1) attaque(); if (tableCommande.get("CommandAttack") == 1) attaque();
updateNbFrameInvincible(); updateNbFrameInvincible();
......
...@@ -51,8 +51,8 @@ public class HitBox { ...@@ -51,8 +51,8 @@ public class HitBox {
public static Boolean collision(HitBox A, HitBox B){ 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 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 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 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 d = !(A.extremites.get("BasGauche").getZ() < B.extremites.get("HautGauche").getZ()); // A est au dessus de B
return a && b && c && d; return a && b && c && d;
} }
......
...@@ -195,7 +195,7 @@ public class Jeu implements Game{ ...@@ -195,7 +195,7 @@ public class Jeu implements Game{
} }
if (!characterAttacking){ //animation d'attaque prioritaire if (!characterAttacking){ //animation d'attaque prioritaire
if ( gameCharacter.getAlpha()==0 || gameCharacter.getHitBox().getExtremites().get("BasDroite").getZ()+gameCharacter.getEntityHEIGHT()/2-gameCharacter.getObstacleBeneath().getHitbox().getExtremites().get("HautDroite").getZ()<-1) { if ( gameCharacter.getAlpha()==0) {
movement = "character_jump";} // pour savoir si il jump ou non movement = "character_jump";} // pour savoir si il jump ou non
else{ else{
if (Right && Left)movement = "character_idle"; if (Right && Left)movement = "character_idle";
......
...@@ -24,8 +24,8 @@ public class Painter implements GamePainter{ ...@@ -24,8 +24,8 @@ public class Painter implements GamePainter{
//protected static final int WIDTH = TILES_SIZE*TILES_IN_WIDTH; //protected static final int WIDTH = TILES_SIZE*TILES_IN_WIDTH;
//protected static final int HEIGHT = TILES_SIZE*TILES_IN_HEIGHT; //protected static final int HEIGHT = TILES_SIZE*TILES_IN_HEIGHT;
protected static final int WIDTH =1500; protected static final int WIDTH =1000;
protected static final int HEIGHT=1000; protected static final int HEIGHT=700;
private LevelManager levelManager; private LevelManager levelManager;
public static Obstacle test = new Obstacle(new HitBox(new Coordonnees(300,550),32,128)); public static Obstacle test = new Obstacle(new HitBox(new Coordonnees(300,550),32,128));
......
...@@ -21,4 +21,9 @@ public final class Obstacle { ...@@ -21,4 +21,9 @@ public final class Obstacle {
return hitbox; return hitbox;
} }
@Override
public String toString() {
return "Obstacle coordonnees" + Double.toString(hitbox.getCentre().getX()) + " " + Double.toString(hitbox.getCentre().getZ());
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment