J'écris un jeu simple avec javascript/html5, et j'essaye d'implémenter la "gravité".'Gravity' ne fonctionne pas correctement dans le jeu Javascript/HTML5
Le code que j'ai est un peu comme ceci:
gravity = 4;
acceleration = 1.1;
function gameLoop() {
gravity = gravity*acceleration;
if (characterPositionY < 600)
characterPositionY = characterPositionY + gravity;
setTimeout(gameLoop,1000/30);
}
Le chiffre « 600 » est le bas de l'écran, le « terrain », si vous voulez, où le joueur doit arrêter de tomber. Malheureusement, comme la gravité fait chuter le personnage d'au moins 4 pixels (et augmente) dans chaque cycle de boucle ... le personnage s'arrêtera souvent devant, ou devant le sol. Comme ceci, par exemple:
[1] est characterPositionY 590
-add 4-
[2] est characterPositionY 594
-add 4-
[3] characterPositionY est 598
-Ajouter 4-
[4] carbonisation acterPositionY est 602
... passé le sol.
Je n'ai jamais vraiment fait de jeux auparavant, et je suis en train de tout faire au fur et à mesure. Il y a probablement de bien meilleurs moyens de s'y prendre.
Votre formule de physique est fausse. En simplifiant un peu, la gravité est une force descendante constante qui ajoute donc une augmentation constante de la vitesse à chaque pas de temps. Ainsi l'équation devrait lire quelque chose de plus comme "downward_speed + = gravity_acceleration". gravity_acceleration serait d'environ 10 mètres par seconde - la conversion en pixels par timestep est à vous. – Kylotan