Itération 3 / Gameplay
RC — Méditation guidée
Retour au calme : séance de méditation avec voix off, barre de progression synchronisée sur la durée audio et ScriptableObjects pour les pistes.
La méditation guidée lance une scène 3D relaxante avec une voix off. L’enseignant choisit une méditation dans le menu, les données sont lues depuis un ScriptableObject et transférées en mémoire temporaire (UserSettings), puis la scène charge et lit ces informations pour démarrer la séance.
Data.cs — ScriptableObject de méditation
Chaque piste de méditation est un ScriptableObject créé dans l’éditeur via Create > Cogni-Actif > Gameplay > Retour au calme > Meditation guidée.
| Variable | Type | Description |
|---|
meditationName | string | Titre (ex. “Le scan corporel”, “La respiration de l’ours”) |
audioClip | AudioClip | Fichier audio de la voix off |
isSitting | bool | Position des avatars : assis (true) ou debout (false) |
Lit la liste des ScriptableObjects disponibles, les associe aux boutons de l’interface et prépare le lancement.
| Champ | Type | Description |
|---|
meditationData | List<Data> | Toutes les pistes de méditation disponibles |
selectedMeditationName | TextMeshProUGUI | Titre de la méditation sélectionnée |
buttonList | List<Button> | Boutons cliquables à l’écran |
| Méthode | Description |
|---|
Start() | Lie chaque bouton à son index dans meditationData et sélectionne le premier par défaut |
OnMeditationSelected(int index) | Met à jour le titre et prépare les données (isSitting, audioClip, meditationName) |
Commencer() | Sauvegarde dans UserSettings, choisit une scène RC aléatoire via ScenesDatabase.GetRandomRCMeditationGuideeScenePath() et lance le chargement |
UserSettings — mémoire
| Propriété | Type | Description |
|---|
IsSitting | bool | Position de l’avatar |
MeditationClip | AudioClip | Piste audio de la voix off |
MeditationName | string | Titre affiché en haut de l’écran de jeu |
GameManager — déroulement de la séance
Lance la musique d’ambiance, déclenche la voix off et synchronise la barre de progression sur la durée du fichier audio.
Champs sérialisés
| Champ | Type | Description |
|---|
robotAnimationController / avatarAnimationController | AnimationController | Animation des personnages (assis ou debout selon IsSitting) |
audioClip | AudioClip | Piste de secours si UserSettings est vide |
startFrameTitle | TextMeshProUGUI | Affiche le nom de la méditation |
endFrame | GameObject | Panneau “Fin de l’activité” |
progressBar | SegmentedProgressBar | Barre de progression |
Méthodes importantes
| Méthode | Description |
|---|
Start() | Lance music_Calm_01, récupère la voix off depuis UserSettings, met à jour le titre et prépare le tag statistique “RC-MG” |
StartActivity() | Joue la voix off. Récupère audioClip.length pour configurer la barre de progression. Utilise Invoke("ActiveEndFrame", audioDuration + 1) pour afficher l’écran de fin exactement à la fin de la voix. |
EndActivity() | Stoppe la musique et la voix off (utile si on quitte prématurément), retourne au menu et écrit les statistiques |