EDIT: Je creusais dans le code source extrêmement bien documenté dans le lien de Decker (vector movement demo) et je suis assez confiant que je peux comprendre cela travailler une partie de votre code. Merci à tous pour votre aide: DComment déplacer un élément le long d'une trajectoire courbe en fonction des forces?
Je travaille sur le mouvement pour un jeu en javascript. Les flèches gauche et droite font pivoter une image d'un vaisseau spatial tandis que la flèche vers le haut l'accélère. En utilisant le degré de rotation et la vitesse, je peux calculer le mouvement en termes de x
et y
avec Math.sin()
et Math.cos()
, mais cela signifie que le navire se comporte comme une voiture. Voyant que c'est supposé être dans l'espace, je voudrais faire en sorte que la rotation du vaisseau n'affecte que son chemin en accélérant et en tenant compte du mouvement actuel du vaisseau.
Je foiré avec elle beaucoup et essayé divisant le mouvement en deux forces distinctes, la direction du courant et de la vitesse et la direction souhaitée, mais rien ne semble même pas proche de la façon dont il devrait se sentir.
Désolé si cela était source de confusion, voici le code simplifié pour le mouvement original:
function main()
{
if(keyStates[39]) // Right arrow pressed?
ship.deg+=8;
if(keyStates[37]) // Left arrow pressed?
ship.deg-=8;
if(keyStates[38]) // Up arrow pressed?
{
if(ship.speed<16)
ship.speed+=1;
}
var shift=getXYshift(ship.deg,ship.speed);
function getXYshift(deg,speed)
{
return {x:Math.round(Math.cos((90-deg)*Math.PI/180)*speed*-1), y:Math.round(Math.sin((90-deg)*Math.PI/180)*speed)};
}
setTimeout(function(){ main() }, 50);
}
utilisez-vous des vecteurs du tout? –
faites-vous référence à des graphiques vectoriels ou des conteneurs de type tableau? – Austen
graphiques vectoriels –