Ich habe versucht, Funktionalität zu meinem libGdx Spiel hinzuzufügen, um die Eigenschaften einer Kachel zu erhalten, wenn ich auf eine Zelle klicke. Ich habe this Tutorial dazu verwendet, wie ich die Mausinteraktion zu meiner Tilemap hinzufügen kann. Mein Problem ist, dass auf die Eigenschaften der Kachel innerhalb der ersten verschachtelten for-Schleife zugegriffen werden kann, aber wenn ich erneut auf die Eigenschaften zugreife, wird null zurückgegeben. Ich versuchte, die Zelle manuell zugreifen, die ebenfalls fehlgeschlagen :(Java: LibGdx TileMapTile bekommt keine Eigenschaften nach der Verwendung in verschachtelten für Schleife
AnimatedTiledMapTile animCloudTMap = new AnimatedTiledMapTile(1/12f, fcloudTiles);
AnimatedTiledMapTile animSoldierTMap = new AnimatedTiledMapTile(1/16f, fSoldierTiles);
AnimatedTiledMapTile animCmdTMap = new AnimatedTiledMapTile(1/12f, fCmdiles);
AnimatedTiledMapTile animWallTMap = new AnimatedTiledMapTile(1/12f, fWallTiles);
TiledMapTileLayer layer = (TiledMapTileLayer) map.getLayers().get(0);
//System.out.println(layer.getName());
for(int x = 0; x < layer.getWidth(); x++) {
for(int y = 0; y < layer.getHeight(); y++) {
Cell cell = layer.getCell(x, y);
if(cell != null) {
//System.out.println("First "+x +", "+ y);
TiledMapTile tile = cell.getTile();
if(tile.getProperties().containsKey("animated")
&& tile.getProperties().get("animated",String.class).equals("true")) {
if(tile.getProperties().get("name",String.class).equals("cloud")) {
cell.setTile(animCloudTMap);
}
if(tile.getProperties().get("name",String.class).equals("cmd")) {
cell.setTile(animCmdTMap);
}
if(tile.getProperties().get("name",String.class).equals("soldier")) {
cell.setTile(animSoldierTMap);
}
if(tile.getProperties().get("name",String.class).equals("wall")) {
cell.setTile(animWallTMap);
}
}
tile.getProperties().put("X", x);
tile.getProperties().put("Y", y);
System.out.println(tile.getProperties().get("name", String.class));
}
}
}
for(int x = 0; x < layer.getWidth(); x++) {
for(int y = 0; y < layer.getHeight(); y++) {
Cell cell = layer.getCell(x, y);
if(cell != null) {
TiledMapTile tile = cell.getTile();
System.out.println(tile.getProperties().get("name", String.class));
}
}
}
rend = new OrthogonalTiledMapRenderer(map, .125f);
rend.setView(cam);
//Impose an input grid
stage = new TiledMapStage(map);
stage.getViewport().setCamera(cam);
Gdx.input.setInputProcessor(stage);
Hier ist die Ausgabe:
cloud
...
cloud
null
...
null
Ah ich sehe, danke für die schnelle Antwort! Ich habe diesen Code einfach zu den if-Anweisungen hinzugefügt: MapProperties mp = tile.getProperties(); \t \t \t \t \t \t \t Zelle.setTile (animWallTMap); \t \t \t \t \t \t \t Kachel = Zelle.getTile(); \t \t \t \t \t \t \t kachel.getProperties(). PutAll (mp); Dann hat es funktioniert! –