Bonjour,
j'essaye de faire un runner en rythme avec de la musique (les sauts doivent être calé avec les beats de la musique). Sauf que j'ai remarqué que la position de mon personnage a un instant T est dépendant de mon framerate ce qui assez gênant pour un jeu de rythme. J'ai voulu utiliser deltaTime mais je ne sais si je peux. Je suis parti du PlatformerRunner du Standard assets qui utilise la vélocité du rigidBody du personnage pour le déplacer à l'infini.
Y a t-il un moyen pour moi de synchroniser le déplacement du personnage avec la musique ?
AIDE Runner 2d en rythme
- boubouk50
- ModoGenereux
- Messages : 6222
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: AIDE Runner 2d en rythme
J'ai trouvé timeSamples dans la doc.
Aussi, il y a quelques réponses sur le net:
https://answers.unity.com/questions/897 ... -game.html
https://answers.unity.com/questions/228 ... music.html
Aussi, il y a quelques réponses sur le net:
https://answers.unity.com/questions/897 ... -game.html
https://answers.unity.com/questions/228 ... music.html
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Re: AIDE Runner 2d en rythme
Si tu utilise un rigidbody avec vélocité, tu n'a pas besoin de deltaTime pour être indépendant du framerate (fixeddeltatime quand tu ajoute ta force dans un fixedupdate te permet simplement d'avoir une unité pratique). Mais tu risque tout de même d'être légèrement désynchro, parce que le moteur physique n'est pas déterministe.
D'ailleurs demande toi si tu a réellement besoin du moteur physique pour tes déplacements.
Compare simplement l'avancement du joueur dans ton niveau à l'avancement de la piste sonore avec timeSamples, et ajuste légèrement le audisource.pitch (qui induit la vitesse de lecture) et le Time.timeScale en continue pour rester au plus proches de ton objectif.
en pseudo code:
D'ailleurs demande toi si tu a réellement besoin du moteur physique pour tes déplacements.
Compare simplement l'avancement du joueur dans ton niveau à l'avancement de la piste sonore avec timeSamples, et ajuste légèrement le audisource.pitch (qui induit la vitesse de lecture) et le Time.timeScale en continue pour rester au plus proches de ton objectif.
en pseudo code:
Code : Tout sélectionner
float difference = audiosource.timeSamples / audiosource.clip.samples - distance parcouru / longueur du niveau
audisource.pitch = 1 - difference * constante
time.timescale = 1 + difference * constante
____________________________________________
Hop Boy
Hop Boy