AIDE Runner 2d en rythme

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Avor
Messages : 1
Inscription : 06 Mars 2018 14:19

AIDE Runner 2d en rythme

Message par Avor » 06 Mars 2018 14:21

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 ?

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6221
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: AIDE Runner 2d en rythme

Message par boubouk50 » 06 Mars 2018 14:39

"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

Avatar de l’utilisateur
Titan
Messages : 582
Inscription : 12 Sep 2011 13:54
Contact :

Re: AIDE Runner 2d en rythme

Message par Titan » 08 Mars 2018 14:01

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:

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

Répondre

Revenir vers « Scripting »