Je développe un petit jeu où mon personnage accélère petit à petit. Cela fonctionne très bien.
Cependant, j'aimerai qu'arrivé à un certain timer, l'accélération s'arrête, et que le personnage continue à avancer à une vitesse constante.
Voici le code que j'ai inséré dans la fonction Update() :
Code : Tout sélectionner
if (speed < 4f) {
float intervalle = Time.timeSinceLevelLoad - lastTime;
speed += constantSpeed * intervalle;
lastTime = Time.timeSinceLevelLoad;
}
else {
speed = 4f;
}
posX = speed * Time.timeSinceLevelLoad + (1 / 2) * constantSpeed * (Time.timeSinceLevelLoad * Time.timeSinceLevelLoad);
GetComponent<Transform>().position = new Vector3(posX, this.transform.position.y, this.transform.position.z);
J'ai compris pourquoi cela ne fonctionnait pas correctement, mais je n'arrive pas à corriger mon problème.
En gros, dans ce cas, le dernier écart entre la position du personnage à chaque frame avant d'arriver à une vitesse de 4 est de 0.08.
Quand le personnage arrive à une vitesse de 4, l'écart de sa position à chaque frame passe à 0.06, ce qui ralentit finalement le personnage même si après il continue à une vitesse constante.
La formule que j'utilise pour déterminer posX est un peu compliqué ici. Un ami me la modifié pour essayé de réglé le problème, mais avant je faisait simplement : posX = Time.timeSinceLevelLoad * speed. Et ca marchait également.
La raison de mon problème est la suivante :
Temps * Vitesse = PosX.
Soit une vitesse de 3 initiale :
1 x 3 = 3
2 x 4 = 8 écart de 5
3 x 5 = 15 écart de 7
4 x 6 = 24 écart de 9
ON STABILISE LA VITESSE à 6
5 x 6 = 30 écart de 6
6 x 6 = 36 écart de 6
7 x 6 = 42 écart de 6
Pour résoudre mon problème, il faudrait qu'après stabilisation de la vitesse, l'écart soit ici de 9...
J'espère que quelqu'un pourra m'aider, si vous avez besoin d'autres informations pour m'aider demandez !! Ca fait longtemps que je suis dessus je n'y arrive vraiment pas....
Merci !
Stalki.