Tu veux rendre tes ennemis un peu plus agressifs et rendre ton jeu un peu plus piquant ? Je t'ai préparé un petit hack très simple pour que ton joueur puisse recevoir des coups.
Créer une animation
Tu as peut-être remarqué que la caméra de ton jeu effectue un petit balancement continu. Nous allons amplifier ce balancement quand le joueur reçoit un coup pour bien qu'il comprenne ce qui lui arrive.
Dans le script view.js
crée une variable publique shake
.
let shake = 0 ;
Ensuite, trouve dans le script view.js
la fonction stoner()
et remplaces les lignes suivantes.
function stoner(){
// crée le mouvement continu de la caméra
let sp=0.0005;
let amp=0.01;
let sp=0.0005 * ( 1 + shake *0.3);
let amp=0.01 * ( 1 + shake );
if ( shake > 1 ) shake -= 0.25;
let h = view.height;
let w = view.width;
view.translate(w/2,h/2,sin(millis()*sp)*4);
view.rotate (sin(millis()*sp)*amp);
view.rotateY (cos(millis()*sp)*amp);
view.translate(-w/2,-h/2,0);
}
Créer la fonction hit()
Après ça nous allons avoir besoin d'une nouvelle fonction à déclencher quand le joueur est touché.
Je t'en ai préparé une que tu peux copier dans le script enemy.js
.
function hit() {
fx[2].play();
shake = 10 ;
}
Déclencher l'animation
Super, maintenant il ne nous reste plus qu'à la déclencher au bon moment. Va dans le script enemy.js
, puis trouve la fonction move()
et ajoutes-y cette ligne.
function enemyMove(thisEnemy){
// déplacement l'ennemi
let x = thisEnemy.pos[1].x;
let y = thisEnemy.pos[1].y;
let v;
if (x<thisEnemy.target.x) x++;
else if (x>thisEnemy.target.x) x--;
else if (y<thisEnemy.target.y) y++;
else if (y>thisEnemy.target.y) y--;
v = createVector(x,y);
if (pathCheck(x,y,true, true)) thisEnemy.pos[1] = v ;
if (vecIsEqual(playerPos[1], v)) hit();
}
Et voilà ! Attention à ne pas placer trop d'ennemis dans ton jeu, sans quoi cet effet risquerai de devenir agaçant.