Mouvement de personnage lisse dans un jeu de toile en utilisant les commandes du clavier
Droite, je suis de la création d'un sidescrolling endless space jeu sur le thème de l'aide canvas et javascript. Je suis du contrôle d'un vaisseau spatial en utilisant les flèches haut et bas et je veux le mettre en œuvre une sorte de mouvement d'assouplissement, afin que le navire ne s'arrête pas morte quand je laisse aller les touches. J'ai regardé autour et je n'ai pas trouvé quelque chose en plus de ma propre tentatives ne sont tout simplement pas de travail, c'est ce que j'ai essayé...
Jet.prototype.checkDirection = function () {
if (this.isUpKey) {
this.drawY -= this.speed;
if (this.speed < 5) {
this.speed += 0.1;
}
}
if (this.isDownKey) {
this.drawY += this.speed;
if (this.speed < 5) {
this.speed += 0.1;
}
}
if (!this.isUpKey) {
if (!this.isDownKey) {
if (this.speed >= 0) {
this.drawY -= this.speed;
this.speed -= 1;
}
}
}
if (!this.isDownKey) {
if (!this.isUpKey) {
if (this.speed >= 0) {
this.drawY += this.speed;
this.speed -= 1;
}
}
}
source d'informationauteur Joe Taylor | 2013-03-11
Vous devez vous connecter pour publier un commentaire.
Vous voulez juste appliquer un peu de friction. Son assez facile. Vous pouvez faire quelque chose comme ce qui suit.
Plus la valeur est faible (0.8, 0.5, etc) le plus vite vous allez ralentir.
J'ai fourni une démonstration où vous pouvez vous déplacer et va progressivement ralentir. Aller de l'avant et de jouer avec la valeur et de voir comment il affecte.
Démonstration En Direct
Je pense que ce que je voudrais faire est de sur keyup ne pas arrêter le bateau, il suffit d'avoir une fonction qui la ralentit un peu puis appeler cette fonction setInterval à l'intervalle qui vous donne l'effet désiré, puis une fois que la vitesse du navire est zéro appel clearInterval
Donc sur keyup u fondamentalement, le programme d'installation setInterval(slowShip, 500)
Vous pouvez essayer de réduire la vitesse en continu sur chaque image