Odyc.js

🪤 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ément
  • onEnter — appelé quand le joueur entre sur une case contenant l’élément
  • onLeave — 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éthodeTypeDescriptionLecture seule
solidbooleanRend l’objet traversable ou nonNon
visiblebooleanAffiche ou masque l’objetNon
spritenumber | stringChange l’apparence de l’objetNon
soundstring| objectChange le son joué lors d’une interactionNon
dialogstring | string[]Modifie le texte affiché dans la boîte de dialogueNon
endstring | string[]Déclenche une fin de jeu personnaliséeNon
symbolstringLe caractère représentant l’objet dans la mapOui
position[number, number]Coordonnées [x, y] de l’objet sur la carteOui
onCollidefunctionFonction appelée lors d’une collisionOui
onEnterfunctionFonction appelée à l’entrée sur la caseOui
onLeavefunctionFonction appelée à la sortie de la caseOui
remove() => voidSupprime 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()
			}
		}
	}
})