Donc, je comprends que, pour obtenir un mouvement indépendant du taux de trame, je dois multiplier la vitesse de base par (1000/delta). Cela fonctionne sur des valeurs qui représentent la vitesse, mais quand j'essaye ceci avec une variable d'accélération, par exemple. gravité, ça ne marchera pas, ce n'est même pas indépendant du taux de trame.Framerate accélération indépendante
Existe-t-il une formule différente pour les variables d'accélération, ou est-ce que j'oublie quelque chose d'autre?
Exemple:
var Multiplier:Number = (GetDeltaTime())/(1000/30);
jumpVelocity = -21 * Multiplier //works
gravity = 1.5 * Multiplier //dosn't work
Ceci est appelé au début de chaque trame
Modifier: trouvé une solution, je devais carré du temps delta. Pas sûr à 100% pourquoi cela fonctionne, mais c'est le cas.
Alors:
jumpVelocity = -21 * Multiplier //unchanged
gravity = 1.5 * Math.pow(Multiplier,2) //works now
Je ne sais rien sur actionscript, mais je connais la physique et cela n'a aucun sens pour moi. Connaissez-vous les unités? Pourriez-vous nous donner quelques chiffres, et nous dire ce qui ne va pas (pas seulement "ça ne marchera pas")? – Beta
Les unités sont des pixels/30e de seconde. Fondamentalement, tout fonctionne sauf l'accélération, la gravité et la friction. Tout cela modifie la vitesse, pas les coordonnées. À des fréquences d'images plus élevées, ces valeurs semblent augmenter (par exemple accélération plus rapide, gravité plus élevée). – lordSimon