Permettre aux ennemis d'attaquer le joueur

pour Raphaël (Rosny-sous-bois)

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.