2014-07-10 4 views
0

J'essaie de créer un jeu dans lequel les objets apparaissent sur une minuterie puis commencent à se déplacer. Je voudrais maintenir le taux d'image indépendamment de la vitesse du jeu, donc j'ai essayé de mettre en œuvre le temps delta:L'heure du delta n'est pas calculée correctement

lastTime = thisTime; 
thisTime = (int) SystemClock.currentThreadTimeMillis(); 
deltaTime = thisTime - lastTime; 

for (int i = 0;i < objectList.size();i++) { 
    objectList.get(i).updatePosition(deltaTime); 
    objectList.get(i).display(bitmapCanvas); 
} 

Et ma méthode updatePosition:

public void updatePosition(float deltaTime) { 
    this.y += 10/1000 * deltaTime; 

}

De ma compréhension , le taux (10 dans ce cas) devrait être divisé par 1000 puisque deltaTime est en millisecondes, mais je l'ai essayé avec d'autres valeurs, et les objets apparaissent juste sur l'écran et ne bougent pas. Je n'avais aucun problème à les faire bouger avant d'essayer d'implémenter l'interpolation.

Si ça aide, je notais l'heure delta et c'était généralement autour de 20/30. Est-ce normal? J'ai regardé probablement 5 ou 6 questions sur GameDev et un couple sur Stack Overflow mais je pense que je dois mal comprendre quelque chose car je n'arrive pas à faire fonctionner ça.

+3

Le calcul de 10/1000 est en cours d'exécution (au moment de la compilation) en arithmétique entière, donc c'est 0 ... Essayez 10/1000f, ou juste 0,01f. –

+0

@JonSkeet Je passais mon temps à chercher cette seule phrase réponse^_^Je ne sais pas pourquoi je ne m'en souvenais pas. Merci Jon Skeet. –

Répondre

0

Donc, cela ne semble pas sans réponse, Jon Skeet était (évidemment) correcte:

Le calcul de 10/1000 est en cours d'exécution (au moment de la compilation) en arithmétique entière, il est donc 0 ... Essayez 10/1000f, ou juste 0.01f.

Questions connexes