2017-04-11 3 views
0

J'ai commencé à créer un jeu 2D dans LibGDX en utilisant une carte (mosaïques de 32 x 32 pixels) à partir d'un éditeur de cartes en mosaïque. Dans la méthode generateMushrooms, je veux accéder à la cellule (1,2) dans le calque 1 et définir sa mosaïque à une autre mosaïque dans mon tileset sprites.png avec l'identifiant de 8. Comment est-ce que je pourrais y parvenir? En ce moment je reçois une exception de pointeur nul.Accéder à une mosaïque de cellule spécifique dans LibGDX


 
public void create() { 
 

 
float w = Gdx.graphics.getWidth(); 
 
float h = Gdx.graphics.getHeight(); 
 
camera = new OrthographicCamera(); 
 
camera.setToOrtho(false, 256, 256); 
 
camera.update(); 
 
tiledMap = new TmxMapLoader().load("custom.tmx"); 
 
tiledMapRenderer = new OrthogonalTiledMapRenderer(tiledMap); 
 
generateMushrooms(); 
 
Gdx.input.setInputProcessor(this); 
 
sb = new SpriteBatch(); 
 
texture = new Texture(Gdx.files.internal("badlogic.jpg")); 
 
sprite = new Sprite(texture, 50, 50); 
 
} 
 

 
@Override 
 
public void render() { 
 

 
Gdx.gl.glClearColor(0, 0, 0, 0); 
 
Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA); 
 
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 
 
camera.update(); 
 

 
tiledMapRenderer.setView(camera); 
 
tiledMapRenderer.render(); 
 
sb.setProjectionMatrix(camera.combined); 
 
sb.begin(); 
 
//sprite.draw(sb); 
 
sb.end(); 
 
} 
 

 

 
public void generateMushrooms() { 
 

 
//Get first layer 
 

 
TiledMapTileLayer layer = (TiledMapTileLayer) tiledMap.getLayers().get(1); 
 

 
// Get cell at row 1 column 2 
 

 
TiledMapTileLayer.Cell cell = layer.getCell(1, 2); 
 

 
// Get Tileset 
 

 
TiledMapTileSet tileSet = tiledMap.getTileSets().getTileSet("sprites.png"); 
 

 
//Set tile of id 8 for the cell 
 

 
cell.setTile(tileSet.getTile(8)); 
 

 
//Set the cell back in the layer at their x and y positions 
 

 
layer.setCell(8, 16, cell); 
 

 
}

+0

où est votre exception de pointeur nul? – Aryan

+0

Les couches commencent à 0 obtenez-vous le bon calque? – dfour

+0

L'exception de pointeur nul se trouve à la ligne cell.setTile (tileSet.getTile (8)); Le calque 0 contient mes carreaux de fond et j'espérais dessiner une tuile dans le calque 1 qui devrait être au-dessus de l'arrière-plan. Il n'y a pas non plus de tuile dans cette cellule et j'essaie de définir la tuile de la cellule – retchers

Répondre

0

a résolu mon problème! J'ai une traversée pour passer à travers les tuiles et remplacer certaines tuiles comme ceci (notez que cur est une couche dans la carte).

for(int i=0;i<row;i++) 
 
{ 
 
for(int j=0;j<column;j++) 
 
{ 
 
cell = cur.getCell(i, j); 
 
cur.setCell(i * 8, j * 8, cell); 
 
cell.setTile(new StaticTiledMapTile("Some type of TextureRegion/Texture"); 
 
} 
 
}