2012-10-05 3 views
0

J'ai créé une application cross silverlight/xna et j'observe que le mouvement n'est pas si lisse. J'essaie de déplacer un nuage sur mon écran.mouvement plus lisse?

L'intervalle de mise à jour est une fois toutes les 33 ms. J'ai couru le test d'application ElapsedTime.Miliseconds != 33 et celui-là ne frappe jamais, donc il fonctionne toutes les 33 ms. Ce que je fais chaque 33 ms, c'est que je prends x pos et soustrais 5.4 (float) pour obtenir la vitesse que je veux.

Mais j'observe que le mouvement n'est pas si lisse, se sent lagueur.

Répondre

3

Ce n'est pas la meilleure façon de gérer ce problème. La façon dont vous l'avez maintenant, votre mouvement de cloud fonctionnera à différentes vitesses basées sur les spécifications de l'ordinateur. Ce que vous devriez faire, c'est déplacer vos nuages ​​en fonction du temps écoulé. Cela rendra votre animation se comportent de la même tout le temps, quel que soit le nombre d'images par seconde, vous pouvez pomper:

xPos -= elapsedTime.Miliseconds * moveSpeed; 

Définissez la variable à quelque chose qui de vitesse de déplacement fonctionne pour vous.

+3

Un exemple classique de 'rate * time = distance'. Gardez à l'esprit les unités de mesure lorsque vous définissez votre vitesse de déplacement. Si vous multipliez par millisecondes, alors votre taux doit être en distance par milliseconde pour que la multiplication fonctionne. –

Questions connexes