2013-07-24 2 views
1

Je viens de remarquer que lorsque j'éteins mon écran sur mon appareil mobile et que je le rallume, certains graphiques se redimensionnent ou disparaissent. Mon jeu est codé en résolution 800x480 et mon HTC Desire HD n'a pas ce problème (il a une résolution de 800x480). Cependant, lorsqu'il est testé sur mon HTC One ou un Samsung Galaxy S3, l'échelle graphique ou se comporter bizarre. La seule chose commune aux objets qui ont un comportement étrange est qu'ils tournent à chaque image. Les objets stationnaires ne semblent pas du tout affectés.L'utilisateur libgdx éteint l'écran

J'ai des étoiles qui tournent et évoluent vers le haut/bas chaque image et j'ai un bloc mobile qui va à gauche/droite ou haut/bas. Le bloc en mouvement semble ignorer la collision lorsque l'écran est redémarré et disparaît à des endroits qu'il ne devrait pas pouvoir atteindre.

Des idées?

Merci d'avance.

+0

Postez votre code de rotateur d'image si possible. – Papasmile

+0

setScale (getScale() + 0,005f * Gdx.graphics.getDeltaTime() * Assets.FPS); setRotation (getRotation() - 0.5f * Gdx.graphics.getDeltaTime() * Assets.FPS); –

Répondre

1

Lorsque vous éteignez l'écran, le rendu est suspendu (c'est-à-dire qu'aucun appel n'est effectué vers render()). Lorsque vous reprenez, Gdx.graphics.getDeltaTime() sera très grand car la dernière image a été rendue il y a au moins quelques secondes. Ainsi, les valeurs delta temporelles qui sont normalement de l'ordre de 0.0166 (60 FPS) seront maintenant de l'ordre de 100 fois plus élevées.

Si vous utilisez ce delta pour effectuer une étape de simulation de physique/collision, cela deviendra beserk car il est trop grand. La rotation ne devrait pas être un réel problème, mais la mise à l'échelle va également sortir du toit.

Une façon simple d'éviter cela est de mettre quelque chose comme

if (delta > 0.1f) 
    delta = 0.0166f 

pour éviter de prendre des mesures vraiment grandes.