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 | ||
|
jocs_libgdx [2026/03/04 17:39] enric_mieza_sanchez [libGDX és multiplataforma] |
jocs_libgdx [2026/03/06 00:03] (actual) enric_mieza_sanchez [Viewports i resolucions] |
||
|---|---|---|---|
| Línia 73: | Línia 73: | ||
| - Selecciona Main Class: '' | - Selecciona Main Class: '' | ||
| - [[https:// | - [[https:// | ||
| + | |||
| + | \\ | ||
| + | |||
| + | ===== Viewports, resolucions i límits de la pantalla ===== | ||
| + | |||
| + | El codi que fem a libGDX és multiplataforma, | ||
| + | |||
| + | **Ves a l' | ||
| + | |||
| + | Hi treballaràs les resolucions de pantalla i els principis per moure objectes bàsics de forma adequada dins la pantalla. En particular veuràs com fer rebotar pilotes a les parets. | ||
| \\ | \\ | ||
| Línia 246: | Línia 256: | ||
| De la **llibreria Math** destaquem: | De la **llibreria Math** destaquem: | ||
| - | * [[https://libgdx.badlogicgames.com/ci/ | + | * [[https://javadoc.io/ |
| - | * [[https://libgdx.badlogicgames.com/ci/ | + | * [[https://javadoc.io/ |
| - | * [[https://libgdx.badlogicgames.com/ci/ | + | * [[https://javadoc.io/ |
| I a la **llibreria Graphics** destaquem: | I a la **llibreria Graphics** destaquem: | ||
| - | * [[https://libgdx.badlogicgames.com/ci/ | + | * [[https://javadoc.io/ |
| - | * El //batch// només pinta [[https://libgdx.badlogicgames.com/ci/ | + | * El //batch// només pinta [[https://javadoc.io/ |
| - | * [[https://libgdx.badlogicgames.com/ci/ | + | * [[https://javadoc.io/ |
| Línia 281: | Línia 291: | ||
| \\ | \\ | ||
| - | ===== Pilotes rebotant ===== | ||
| - | Molts jocs es basen en fer rebotar pilotes per la pantalla. Us passo algunes estratègies típiques per aconseguir-ho. | ||
| - | |||
| - | {{Pilota-rebots.png}} | ||
| - | |||
| - | Ull! Segons aquesta imatge l' | ||
| - | |||
| - | Com pots veure a la imatge, rebotar una pilota és fàcil si tens les coordenades (pos_x i pos_y) de la posició, i la trajectòria la emmagatzemes com una velocitat descomposada en component X i component Y (vel_x i vel_y , per exemple). | ||
| - | |||
| - | Quan la pilota arriba al límit inferior o superior, només cal invertir el signe de la velocitat Y si la trajectòria semblarà exactament un rebot. | ||
| ==== Exercici ==== | ==== Exercici ==== | ||
| Línia 388: | Línia 388: | ||
| \\ | \\ | ||
| - | ===== Ortographic Camera ===== | ||
| - | Tal i com explica el tutorial del Drop Game, la '' | ||
| - | |||
| - | Les operacions que realitzarà la càmera seran: | ||
| - | Coordenades virtuals -> project -> Coordenades reals (// | ||
| - | Coordenades virtuals <- unproject <- Coordenades reals (// | ||
| - | |||
| - | Posant que volem una pantalla de 800x480 | ||
| - | |||
| - | <file java DesktopLauncher.java> | ||
| - | public class DesktopLauncher { | ||
| - | public static void main (String[] arg) { | ||
| - | Lwjgl3ApplicationConfiguration config = new Lwjgl3ApplicationConfiguration(); | ||
| - | config.setWindowedMode(480, | ||
| - | </ | ||
| - | |||
| - | A l' | ||
| - | |||
| - | <code java> | ||
| - | public final int GAME_WIDTH = 800; | ||
| - | public final int GAME_HEIGHT = 480; | ||
| - | |||
| - | public void create() { | ||
| - | camera = new OrthographicCamera(); | ||
| - | camera.setToOrtho(false, | ||
| - | | ||
| - | //... | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | Per fer que el '' | ||
| - | |||
| - | <code java> | ||
| - | public void render() { | ||
| - | camera.update(); | ||
| - | spriteBatch.setProjectionMatrix(camera.combined); | ||
| - | | ||
| - | //... | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | Si estem capturant entrades de la pantalla, caldrà la operació contrària: '' | ||
| - | |||
| - | <code java> | ||
| - | protected int virtual_joystick_control() { | ||
| - | // iterar per multitouch | ||
| - | // cada " | ||
| - | for(int i=0; | ||
| - | if (Gdx.input.isTouched(i)) { | ||
| - | Vector3 touchPos = new Vector3(); | ||
| - | touchPos.set(Gdx.input.getX(i), | ||
| - | // traducció de coordenades reals (depen del dispositiu) a 800x480 | ||
| - | game.camera.unproject(touchPos); | ||
| - | // les dades convertides s' | ||
| - | //... | ||
| - | </ | ||
| - | |||
| - | \\ | ||
| ===== Actors, Scenes i Skins ===== | ===== Actors, Scenes i Skins ===== | ||