Bon, j'ai réussi avec une méthode un peu bourrine, mais si ça peut toujours aider quelqu'un.
Alors voilà, j'ai plusieurs Room différentes avec donc plusieurs musiques selon la Room et il est possible d'aller de l'une à l'autre assez simplement. A cela, je voulais ajouter une musique type combat qui se déclenche UNIQUEMENT pendant le combat, peu importe la zone et qui se termine une fois le combat achevé (reprenant ainsi la musique initiale de la room, là où elle en était)
Voilà ma méthode.
Alors je vais donner l'exemple pour 4 titres de chansons (inventés)
aRnb
aPiano
aRap
aTechno
1er étape J'ai crée 3 globales Variables
music_cha de type AudioChannel* //C'est pour lui signifier quel Canal on utilise
music_pos de type int //Pour définir a partir de quel moment la zik s'est s'arrêté
nusic_num de type int // Il s'agit de numéroter les chansons (de 1 à 4)
2eme Étape Alors, là où c'est fastidieux car il faut inscrire ce code à chaque fois que dans le code on lui demande de jouer l'une des chansons (dans un room_load par exemple)
Exemple :
- Code:
-
aRnb.Play();
music_cha = aRnb.play();
music_num= 1;
Pour a Piano j'écrivais donc
- Code:
-
aPiano.Play();
music_cha = aPiano.play();
music_num= 2;
etc...
Une fois que j'ai inscrit tout ça, j'ai donc expliqué au logiciel que lorsqu'il lance la chanson aPiano, le canal utilisé est music_cha et que la valeur associé à cette chanson est le 2
3e Étape Tout ça pour quoi ?
Alors c'est simple, dès que je lance un combat (j'ai fait une fonction combat pour mon jeu)
J'ai ajouté les ligne suivante
- Code:
-
music_pos = music_cha.Position;
Game.StopAudio(eAudioTypeMusic);
aBaston.Play(eAudioPriorityVeryHigh);
Et à la fin du combat , j'ai fait une fonction
- Code:
-
function RetourMusic() {
aBaston.Stop();
if(music_num==1) aRnb.PlayFrom(music_pos);
if(music_num==2) aPiano.PlayFrom(music_pos);
if(music_num==3) aRap.PlayFrom(music_pos);
if(music_num==4) aTechno.PlayFrom(music_pos);
}
}
Voilà, j'espère que c'est clair.
Bon y'a probablement plus évident... A vous de me dire
Bonne soirée.