Les Événements
Pour ajouter de l’interactivité, Odyc.js propose un système d’événements.
Ils permettent de déclencher des actions ou de modifier l’état du jeu lorsque le joueur interagit avec un élément.
Les événements sont définis dans les templates
.
🔎 Types d’événements
Il existe trois types d’événements :
onCollide
— appelé quand le joueur entre en collision avec l’élémentonEnter
— appelé quand le joueur entre sur une case contenant l’élémentonLeave
— appelé quand le joueur quitte une case contenant l’élément
createGame({
templates: {
x: {
onCollide() {
alert(1)
},
onEnter() {
alert(2)
},
onLeave() {
alert(3)
}
}
}
})
La cible de l’événement
Lorsqu’un événement est déclenché, l’objet concerné est passé en paramètre de la fonction. Cela vous permet de le modifier dynamiquement ou de le supprimer.
createGame({
templates: {
x: {
onCollide(cible) {
cible.remove()
}
}
}
})
📋 Propriétés disponibles
Propriété / Méthode | Type | Description | Lecture seule |
---|---|---|---|
solid | boolean | Rend l’objet traversable ou non | Non |
visible | boolean | Affiche ou masque l’objet | Non |
sprite | number | string | Change l’apparence de l’objet | Non |
sound | string | object | Change le son joué lors d’une interaction | Non |
dialog | string | string[] | Modifie le texte affiché dans la boîte de dialogue | Non |
end | string | string[] | Déclenche une fin de jeu personnalisée | Non |
symbol | string | Le caractère représentant l’objet dans la map | Oui |
position | [number, number] | Coordonnées [x, y] de l’objet sur la carte | Oui |
onCollide | function | Fonction appelée lors d’une collision | Oui |
onEnter | function | Fonction appelée à l’entrée sur la case | Oui |
onLeave | function | Fonction appelée à la sortie de la case | Oui |
remove | () => void | Supprime l’élément | — |
Exemple : changer une propriété
Imaginons un personnage qui dit “Bonjour” la première fois, puis “Re-bonjour” les fois suivantes :
createGame({
templates: {
x: {
dialog: 'Bonjour',
onCollide(cible) {
cible.dialog = 'Re-bonjour'
}
}
}
})
Supprimer un objet
Pour faire disparaître un objet lorsqu’on le touche, utilisez la méthode remove()
:
createGame({
templates: {
x: {
dialog: 'Bonjour',
onCollide(cible) {
cible.remove()
}
}
}
})