CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[javascript] animation d'une image

2376
2376
Niveau 9
22 avril 2011 à 19:40:55

Bonjour à tous :)
en ce moment j'essai de faire un petit "jeu" en javascript avec html 5 et les balises canvas pour les formes

Pour l'instant j'ai reussi à faire un petit rond qui se déplace en fonction des 4 touches directionnelles du clavier.

Mais voila je n'arrive pas à faire bouger mon ptit rond en diagonale lorsque j'appuie par exemples sur "haut" et "droite"

Je sais qu'il faut utiliser une technique avec les évènement keypress mais je ne sais pas comment faire.

J'ai un autre "petit" problème, quand je bouge mon rond avec la touche "droite" par exemple et que d'un coup je veuille allez à gauche il y a un moment d'arret, c'est pas instinctif comme dans un fps par exemple.
Est-il possible de résoudre ça en javascript? :(

Voila j'vous remercie des futures réponses (si il y en a :hap: )

PaulAimik
PaulAimik
Niveau 10
22 avril 2011 à 20:55:02

Pour les jeux en général il vaut mieux faire un code qui sauvegarde l'état des touches (cherches "key poll" sur google).
Pour aller en diagonale le plus simple est d'utiliser des vecteurs.

Exemple :

var position = new Vector2(); // position du perso
var speed = 10; // vitesse du perso
var keyboard = new KeyPoll();
...
var direction = new Vector2(0,0);
direction.x = keyboard.isDown(Keys.RIGHT) - keyboard.isDown(Keys.LEFT);
direction.y = keyboard.isDown(Keys.UP) - keyboard.isDown(Keys.DOWN);
// on normalize la direction pour que la magnitude du vecteur soit de 1 (autrement le perso ira plus vite en diagonale ! )
direction.normalize();
// velocité = direction * vitesse
var velocity = direction.clone();
velocity.scale(speed);
// nouvelle position = position actuelle + velocité
var newPosition = position.clone();
newPosition.add(velocity);

Enfin pour ton problème ca doit venir à une mauvaise gestion des énervements du clavier. Avec un key polling correctement implémenté le problème se posera pas.

NB : les classes Vector2, KeyPoll, et Keys ne sont évidement pas standards. Mais encore une fois tu devrais pas avoir trop de mal à trouver des implémentations en js...

PS : Tu peux aussi te baser sur le temps écoulé pour déterminer la vitesse du perso au lieu d'être dépendant du nombre de cycle/sec de ton jeu. (Cf "time-based animation" dans google).

2376
2376
Niveau 9
23 avril 2011 à 12:10:49

merci pour le réponse :)
Je débute en java alors je ne sais pas comment on implémente le key polling, et en recherchant sur google je ne trouve pas grand chose qui peut m'aider :-(
As tu un lien vers une page qui explique un peu ce que c'est et surtout comment l'implémenter ?
en fait il faut rajouter les classes Vector2 et keypoll au js c'est bien ça?

PaulAimik
PaulAimik
Niveau 10
23 avril 2011 à 17:52:16

http://www.klaasjanhorlings.nl/article/2/Simulate-Flash-8s-Keyboard.isDown-in-Javascript

2376
2376
Niveau 9
24 avril 2011 à 12:29:17

merci :hap:

Sous forums
  • Aide à l'achat Mac
  • Internet
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment