0
我試圖複製相機視口內的一組圖塊(使用Tiled和libGDX)。現在我有一個複製和粘貼代碼:libGDX - 如何在攝像機視口中而不是按層複製切片?
package com.divergent.tapdown;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.maps.tiled.TiledMapTile;
import com.badlogic.gdx.maps.tiled.TiledMapTileLayer;
import com.badlogic.gdx.maps.tiled.TiledMapTileLayer.Cell;
public abstract class TileMapCopier {
public static TiledMapTile[][] copyRegion(TiledMapTileLayer layer, int x, int y, int width, int height) {
TiledMapTile[][] region = new TiledMapTile[width][height];
for (int ix = x; ix < x + width; ix++)
for (int iy = y; iy < y + height; iy++) {
Cell cell = layer.getCell(ix, iy);
if (cell == null)
continue;
region[ix - x][iy - y] = cell.getTile();
}
return region;
}
public static void pasteRegion(TiledMapTileLayer layer, TiledMapTile[][] region, int x, int y) {
for (int ix = x; ix < x + region.length; ix++)
for (int iy = y; iy < y + region[ix].length; iy++) {
Cell cell = layer.getCell(ix, iy);
if (cell == null) {
Gdx.app.debug(TileMapCopier.class.getSimpleName(), "pasteRegion: skipped [" + ix + ";" + iy + "]");
continue;
}
cell.setTile(region[ix - x][iy - y]);
}
}
}
這需要在層上的所有單元格,並將其粘貼到屏幕上時,我希望它:
public void show() {
final TiledMapTileLayer layer = ((TiledMapTileLayer) map.getLayers().get(0));
camera.position.x = layer.getWidth() * layer.getTileWidth()/2;
camera.position.y = layer.getHeight() * layer.getTileHeight()/2;
camera.zoom = 3;
Gdx.input.setInputProcessor(new InputAdapter() {
TiledMapTile[][] clipboard;
@Override
public boolean keyDown(int keycode) {
if(keycode == Keys.C) // copy
clipboard = TileMapCopier.copyRegion(layer, 0, 0, layer.getWidth(), layer.getHeight()/2);
if(keycode == Keys.P) // paste
TileMapCopier.pasteRegion(layer, clipboard, 0, layer.getHeight()/2);
return true;
}
});
}
這是偉大的,但它不是我想要的。而不是複製整個圖層,我只想在複製時複製相機視口內的內容。然後,我想將其粘貼到屏幕頂部,並以使粘貼不可通知的方式重置相機的視口。 (Im本質上採取屏幕的下半部分,並將其放在頂部,以在下面生成新的值)
我該怎麼做?
謝謝!
我已經粘貼它,但它並沒有順利粘貼。我希望它可以同時粘貼和更改攝像頭視口,使其看起來不會被粘貼。它應該看起來就像只停留在同一個地方。 – Divergent
您可以發佈截圖嗎?我不太清楚你現在在說什麼。 也許你太頻繁地調用這個方法,你應該只是有時候打電話。 – ViliX64
我可以通過Skype或TeamView或其他方式向你展示嗎?它更多的是一個視覺問題:S – Divergent