Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.
| Ambdós costats versió prèvia Revisió prèvia Següent revisió | Revisió prèvia | ||
|
libgdx_viewport [2026/03/05 20:16] enric_mieza_sanchez [Dibuixem!] |
libgdx_viewport [2026/03/05 23:04] (actual) enric_mieza_sanchez [Movem l'objecte] |
||
|---|---|---|---|
| Línia 40: | Línia 40: | ||
| // pintem! | // pintem! | ||
| batch.begin(); | batch.begin(); | ||
| - | //... | + | // ...instruccions de dibuix... |
| batch.end(); | batch.end(); | ||
| } | } | ||
| Línia 54: | Línia 54: | ||
| public void dispose() { | public void dispose() { | ||
| batch.dispose(); | batch.dispose(); | ||
| - | font.dispose(); | ||
| } | } | ||
| } | } | ||
| Línia 152: | Línia 151: | ||
| @Override | @Override | ||
| public void render() { | public void render() { | ||
| - | // 1- INPUTS (controls usuari) | + | // 1- INPUTS (controls usuari)... |
| // 2- CALCULEM | // 2- CALCULEM | ||
| // primera prova: increment 0.01mts per iteració | // primera prova: increment 0.01mts per iteració | ||
| - | posx += 0.01; | + | posx = posx + 0.01; |
| // 3- PINTEM | // 3- PINTEM | ||
| - | // projecció | + | // projecció |
| batch.begin(); | batch.begin(); | ||
| batch.draw(pilotaTexture, | batch.draw(pilotaTexture, | ||
| Línia 170: | Línia 169: | ||
| Si proves el codi veuràs que la pilota avança poc a poc. | Si proves el codi veuràs que la pilota avança poc a poc. | ||
| - | Però no hem fet servir la velocitat real '' | + | Però no hem fet servir la velocitat real '' |
| + | <code java> | ||
| + | posx = posx + velx; | ||
| + | </ | ||
| + | |||
| + | Què succeeix? | ||
| + | |||
| + | Si ho feu així veureu que la pilota no avança a 1 m/s, sinó que avança 1 metre per iteració. I els ajustos habituals solen ser de 30 FPS, per tant, la velocitat que ara estem executant és de 30 m/s, segurament ni l'heu vist passar !!! | ||
| + | |||
| + | Perquè la pilota avanci a 1 m/s de veritat (hauria de trigar 8 segons en travessar la pantalla) hauríem de fer el següent: | ||
| + | |||
| + | <code java> | ||
| + | public void render() { | ||
| + | // 1- INPUTS (controls usuari)... | ||
| + | |||
| + | // 2- CALCULEM | ||
| + | float delta = Gdx.graphics.getDeltaTime(); | ||
| + | posx = posx + velx * delta; | ||
| + | |||
| + | // ... | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | <WRAP info> | ||
| + | **En termes físics** | ||
| + | |||
| + | En termes de física, les sumes han de ser de la mateixa magnitud, és a dir, a la posició x [metres] no podem sumar-li una velocitat [m/s], sinó que cal sumar-li un desplaçament també en [metres]. | ||
| + | |||
| + | posx = posx + velx; | ||
| + | |||
| + | {{mdi> | ||
| + | |||
| + | Quant és el desplaçament que cal aplicar-li a posx? Doncs dependrà del temps que hagi passat. Podriem calcular-ho en base als FPS, però tenim una manera millor encara, demanar-li a libGDX que ens digui el temps que ha passat des del darrer '' | ||
| + | float delta = Gdx.graphics.getDeltaTime(); | ||
| + | </ | ||
| + | |||
| + | Ara podrem calcular el desplaçament: | ||
| + | posx = posx + velx * delta; | ||
| + | |||
| + | Que en magnituds serà: | ||
| - | Si ho feu així veureu que la pilota no avança a 1 m/s, sinó que avança 1 metre per iteració. I els ajustos habituals solen ser de 30 FPS, per tant, la velocitat que ara estem executant és de 30 m/s !!! | + | {{mdi> |
| - | Perquè la pilota avançi a 1 m/s de veritat (hauria de trigar 8 segons en travessar la pantalla) hauríem de fer el següent: | + | Ara sí! |
| + | </WRAP> | ||