2012-07-16 3 views
0

J'ai essayé de faire un mouvement de base de tuile dans XNA mais je ne sais pas comment. Mes tuiles sont 32x32, et sprite est la même taille.Mouvement de base de tuile

Voici le code que j'utilise pour déplacer sprite:

if (Keyboard.GetState().IsKeyDown(Keys.Up)) 
    { 
     Position.Y -= Speed.Y; 
    } 
    if (Keyboard.GetState().IsKeyDown(Keys.Down)) 
    { 
     Position.Y += Speed.Y; 
    } 

... et même avec les autres 2 clés.

Je veux que mon sprite se déplace en douceur, une seule tuile exacte à la fois, mais pas "sauter" sur la tuile. Désolé pour mon mauvais anglais, et merci.

Répondre

0

Vous devez modifier la position de votre image-objet en fonction de la durée écoulée. Par conséquent, si votre vitesse est de 32px par seconde et que le temps écoulé est 60 secondes (60fps), vous devez uniquement déplacer l'image-objet 32 * (1/60) pixels par mise à jour.

Utilisez le paramètre Update(GameTime gameTime) pour connaître le temps écoulé depuis la dernière mise à jour.

+0

OK, mais l'image-objet s'arrête de bouger lorsque j'arrête d'appuyer sur la touche et n'atteint pas l'autre carreau. La vitesse est: 32 * gameTime.ElapsedGameTime.TotalSeconds; – Isheros

+0

vous devez définir une position cible, plutôt que de simplement appuyer sur la touche. Donc, définissez un champ qui indique la position cible et continuez à vous déplacer jusqu'à ce que cette valeur soit atteinte. –