Les personnages en mouvements peuvent te permettre d'apporter un peu de vie a tes niveaux en simulant un écosystème propre au jeu. Ces personnages peuvent aussi bien être des interlocuteurs que ton personnage peut rencontrer, des adversaires qu'il doit éviter, ou simplement des personnages neutres qu'il peut mettre à profit dans ses déplacements.
Importer une image
Pour commencer, il va te falloir une image.
Réalises-en une si tu ne l'as pas déjà fait, ou utilise celle ci-dessous (click droit -> enregistrer-sous)
.

Charger l'image dans le programme
Importe ensuite ton image dans ton projet en la plaçant dans le bon dossier : assets/sprites/
.
Puis, ajoute cette ligne au début de ton script game.js
, comme suit.
// chargement des images du jeu
loadSprite( "bean" , "assets/sprites/bean.png" ) ;
loadSprite( "grass" , "assets/sprites/grass.png" ) ;
loadSprite( "portal" , "assets/sprites/portal.png" ) ;
loadSprite( "googoly", "assets/sprites/googoly.png") ;
Déclarer un symbole
Nous allons maintenant déclarer un nouveau type d'objet que tu vas pouvoir placer dans ton jeu.
Dans cet exemple nous avons choisi le caractère F
.
Dans le script level.js
, trouve la variable LEVEL_CONFIG
et ajoutes-y le code ci-dessous, comme suit.
// défini ce à quoi correspond chaque symbole dans le niveau
const LEVEL_CONFIG = {
// taille en pixel de chaque case
width: 64,
height: 64,
// sol
"=": () => [
sprite("grass"),
area(),
solid(),
origin("bot")
],
// fantôme
"F": () => [
sprite("googoly"),
area(),
origin("bot"),
body(),
],
} ;
Placer le personnage
Tu vas maintenant pouvoir choisir l'emplacement de tes personnages dans ton niveau.
Toujours dans le script level.js
, trouve le tableau LEVELS
et place des caractères G
là où tu le souhaites.
// plan du niveau
const LEVELS = [
[
" # @ " ,
"=== F = F F ===" ,
" ===== ====== " ,
],
];
Tes personnages sont maintenant apparents dans ton niveau, mais ils ne se déplacent pas encore.
Créer un nouveau composant
Pour que tes personnages puisent se déplacer, il va nous falloir créer un nouveau composant.
Rends-toi dans le script component.js
et ajoutes-y cette fonction.
// composant permettant au fantome de patrouiller
function patrol( speed = 60 , dir = -1 ) {
return {
id: "patrol",
require: [ "pos", "area" ],
add() {
this.on("collide", (obj, col) => {
if (col.isLeft() || col.isRight()) {
dir = -dir
}
})
},
update() {
this.move(speed * dir, 0)
},
}
}
Ajouter le nouveau composant au personnage
Maintenant, il ne nous reste plus qu'à ajouter notre nouveau composant aux personnages.
Retourne dans le script level.js
, et retrouve dans la variable LEVEL_CONFIG
le passage où sont déclarés nos personnages, puis ajoutes-y ces lignes, comme suit.
// fantome
"F": () => [
sprite("googoly"),
area(),
origin("bot"),
body(),
patrol(),
],
Facultatif : Rendre le personnage dangereux
Si tu veux que ton personnage soit offensif, il suffit de lui ajouter le label "danger"
.
Reste dans le script level.js
, dans la variable LEVEL_CONFIG
là où sont déclarés nos personnages, et ajoute cette simple ligne.
// fantome
"F": () => [
sprite("googoly"),
area(),
origin("bot"),
body(),
patrol(),
"danger",
],