package entity; import environnement.Coordonnees; import environnement.Physique; import jeu.Jeu; public class Character extends Entity{ private double vitesseActuX = 0; // vitesse actuelle supposée nulle au départ private double vitesseActuZ = 0; private final double impulsionSaut; private double masse; public Character(Coordonnees c,double vitesseMax,double m,double impSaut){ super(c,vitesseMax); this.masse = m; this.impulsionSaut = impSaut; } @Override public void deplacements(double commandX,double commandZ,int alpha){ // alpha indique si il est au sol ou non, il vaut 0 ou 1 en fonction double delta = Math.pow(10, -3); // pas de temps remis en secondes //on actualise les positions double newX,newZ; newX = commandX*delta + this.getCoord().getX(); // frottements enleves (le perso finissait par freiner tout seul donc tant que y'a pas d'interet je les enleve, j'ai tjr les equations de cote) if ((commandZ == 0) && (this.getCoord().getZ() >= Jeu.getCoordSol().getZ()))newZ = Jeu.getCoordSol().getZ(); else newZ = ((1-alpha)*Physique.g - commandZ)/2*delta*delta + vitesseActuZ*delta + this.getCoord().getZ(); System.out.println("écart de hauteur: "+Math.abs(this.getCoord().getZ()-newZ)); this.setCoord(new Coordonnees(newX, newZ)); // on set les nouvelles coordonnees //on actualise les vitesses vitesseActuX = commandX; if ((commandZ == 0) && (this.getCoord().getZ() >= Jeu.getCoordSol().getZ())) vitesseActuZ = 0; else vitesseActuZ = vitesseActuZ + 7*((1-alpha)*Physique.g - commandZ)*delta; System.out.println("vitesse z: "+vitesseActuZ); } @Override public void attaque(){ } public void evolveCharacter(double commandX,double commandZ,int alpha){ deplacements(commandX, commandZ, alpha); } public double getVitesseMax() { return vitesseMax; } public double getVitesseActuX() { return vitesseActuX; } public double getVitesseActuZ() { return vitesseActuZ; } public double getM() { return masse; } public double getImpulsionSaut() { return impulsionSaut; } }