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 [2023/05/16 09:45] enric_mieza_sanchez [Primer joc: Drops] |
jocs_libgdx [2025/02/26 22:31] (actual) enric_mieza_sanchez [Controls Touchscreen] |
||
|---|---|---|---|
| Línia 3: | Línia 3: | ||
| En aquest article utilitzarem una llibreria específica, | En aquest article utilitzarem una llibreria específica, | ||
| - | + | {{ libgdx.png? | |
| {{tag> #FpInfor #Dam #DamMp08 #DamMp08Uf3 # | {{tag> #FpInfor #Dam #DamMp08 #DamMp08Uf3 # | ||
| Enllaços: | Enllaços: | ||
| - | - [[libGDX Comunicacions]] en aquesta wiki. | + | - [[libGDX Comunicacions]] |
| + | - [[libGDX Stage]] per a objectes de la llibreria Scene2D (en aquesta wiki). | ||
| - [[https:// | - [[https:// | ||
| - [[https:// | - [[https:// | ||
| Línia 20: | Línia 20: | ||
| Crea el projecte amb l' | Crea el projecte amb l' | ||
| - | |||
| - | \\ | ||
| ==== Troubleshooting ==== | ==== Troubleshooting ==== | ||
| + | |||
| + | <WRAP alert> | ||
| + | **Aquest problema està DEPRECATED i només succeïa en versions anteriors**. | ||
| + | |||
| + | Ho deixem aquí com a // | ||
| + | |||
| Si t' | Si t' | ||
| - Eliminar la compilació de la plataforma iOS. | - Eliminar la compilació de la plataforma iOS. | ||
| - Editar '' | - Editar '' | ||
| - | buildToolsVersion "30.0.3" | + | buildToolsVersion "33.0.0" |
| - | compileSdkVersion 31 | + | |
| - | targetSdkVersion 31 | + | |
| </ | </ | ||
| + | </ | ||
| + | |||
| + | \\ | ||
| + | |||
| + | ===== Definicions ===== | ||
| + | Objectes principals del // | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| \\ | \\ | ||
| Línia 207: | Línia 227: | ||
| // TextureRegion ens permet retallar un fragment de la Texture | // TextureRegion ens permet retallar un fragment de la Texture | ||
| // retallem el fragment de background des de la posició del personatge (posx, posy) | // retallem el fragment de background des de la posició del personatge (posx, posy) | ||
| - | bgRegion.setRegion(posx, | + | bgRegion.setRegion( |
| + | (int)game.SCR_WIDTH, | ||
| // (2) PINTAR | // (2) PINTAR | ||
| Línia 218: | Línia 239: | ||
| game.batch.end(); | game.batch.end(); | ||
| </ | </ | ||
| + | |||
| + | <WRAP important> | ||
| + | ULL amb la funció [[https:// | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | Només que un dels paràmetres sigui un '' | ||
| + | </ | ||
| {{ietiwalk.gif}} | {{ietiwalk.gif}} | ||
| Línia 298: | Línia 327: | ||
| \\ | \\ | ||
| - | ===== Controls | + | ===== Controls |
| - | Els controls d' | + | Els controls d' |
| - | * Teclat (només | + | * Teclat (per versions Desktop) |
| - | * Pantalla | + | * Pantalla |
| * Acceleròmetre | * Acceleròmetre | ||
| * Brúixola/ | * Brúixola/ | ||
| - | Convé llegir la [[https:// | + | Hi ha 2 estratègies importants per gestionar els // |
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | |||
| + | |||
| + | Per saber les tecles que s'han premut consulta els [[https:// | ||
| Línia 368: | Línia 402: | ||
| * Ús WebSockets per comunicacions a temps real. | * Ús WebSockets per comunicacions a temps real. | ||
| </ | </ | ||
| + | |||
| + | \\ | ||
| + | |||
| + | ===== 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 ===== | ||
| + | Per fer controls avançats com Buttons, Dialogs, etc. hem de tenir en compte que son elements tant de renderització com de entrada de dades, i es tracten de forma especial. En caldrà emprar els objectes '' | ||
| + | |||
| + | Algunes referències: | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | |||
| + | IMPORTANT: perquè funcioni el skin cal descarregar tots els arxius a la carepta assets. | ||
| \\ | \\ | ||