Salve sto seguendo vari tutorial della libreria Libgdx per creare giochi Java su Android e Desktop ma vedo che sono complicati in quanto fanno riferimento molte volte agli stessi elementi confondendomi le idee...la mia domanda semplice è che funzione ha il costruttore scritto dopo il commento //------------- nella classe WorldRender, questo è il codice java:
La classe World:codice:package com.pierfra.platformGame.view; import com.pierfra.platformGame.model.Block; import com.pierfra.platformGame.model.Bob; import com.pierfra.platformGame.model.World; import com.badlogic.gdx.graphics.GL10; import com.badlogic.gdx.graphics.OrthographicCamera; import com.badlogic.gdx.graphics.glutils.ShapeRenderer; import com.badlogic.gdx.graphics.glutils.ShapeRenderer.ShapeType; import com.badlogic.gdx.math.Rectangle; public class WorldRenderer { //1 - Variabili "World" e "OrthographicCamera" private World world; private OrthographicCamera cam; /** for debug rendering **/ ShapeRenderer debugRenderer = new ShapeRenderer(); //------------- public WorldRenderer(World world) { this.world = world; this.cam = new OrthographicCamera(10, 7); /* inizializza la grandezza della camera (10 unità X 7 unità).*/ this.cam.position.set(5, 3.5f, 0); /* posiziona la camera che per default punterebbe a (0;0) verso (5 ; 3.5f). 3,5f= metà di 7, la grandezza della camera per trovare il centro */ this.cam.update(); } public void render() { // render blocks debugRenderer.setProjectionMatrix(cam.combined);/* Sintassi essenziale per il rendering (con debug) degli oggetti nel gioco tramite camera. */ debugRenderer.begin(ShapeType.Line); for (Block block : world.getBlocks()) { Rectangle rect = block.getBounds(); float x1 = block.getPosition().x + rect.x; float y1 = block.getPosition().y + rect.y; debugRenderer.setColor(new Color(1, 0, 0, 1)); debugRenderer.rect(x1, y1, rect.width, rect.height); } // render Bob Bob bob = world.getBob(); Rectangle rect = bob.getBounds(); float x1 = bob.getPosition().x + rect.x; float y1 = bob.getPosition().y + rect.y; debugRenderer.setColor(new Color(0, 1, 0, 1)); debugRenderer.rect(x1, y1, rect.width, rect.height); debugRenderer.end(); } }
Considerando che ci sono varie classe pubbliche come "Bob" che è il personaggio principale e "blocks" che sono i blocchi del terreno nel gioco, con la classe "world" che li racchiude tutti, vorrei capire la funzione di "public WorldRenderer(World world) {" cioè perchè si utilizza questa sintassi per inizializzare la "camera" sul gioco? Ho tante idee e vorrei riuscire a sviluppare un gioco 2d ma alcune volte mi blocco sulla sintassi per capirne il funzionamento.codice:package com.pierfra.platformGame.model; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.utils.Array; public class World { /** The blocks making up the world **/ Array blocks = new Array(); /** Our player controlled hero **/ Bob bob; // Getters ----------- public Array getBlocks() { return blocks; } public Bob getBob() { return bob; } // -------------------- public World() { createDemoWorld(); } private void createDemoWorld() { bob = new Bob(new Vector2(7, 2)); for (int i = 0; i < 10; i++) { blocks.add(new Block(new Vector2(i, 0))); blocks.add(new Block(new Vector2(i, 7))); if (i > 2) blocks.add(new Block(new Vector2(i, 1))); } blocks.add(new Block(new Vector2(9, 2))); blocks.add(new Block(new Vector2(9, 3))); blocks.add(new Block(new Vector2(9, 4))); blocks.add(new Block(new Vector2(9, 5))); blocks.add(new Block(new Vector2(6, 3))); blocks.add(new Block(new Vector2(6, 4))); blocks.add(new Block(new Vector2(6, 5))); } }
Grazie

Rispondi quotando