我正在尝试为游戏绘制基于图块的地板。绘制正方形,附加到相邻的方块libgdx
基本上每个瓷砖都有一个高度值,我试图让每个短号以平滑的方式连接到相邻的瓷砖。所以,如果瓦片高度为2,并且瓦片旁边的瓦片高度为3,那么它们将顺利地连接到斜坡上。
这里是我得到这个截至目前代码:
--see下面的更新的代码 -
瓷砖的高度由Tile.getCenter()获得; 我不知道从哪里去,我正在使用libGDX。
px和py只是加载点的中心,floor是楼层的LibGDX模型批次,希望最终包含每个楼层时间。
在此先感谢!
-Bc
- 编辑 -
只是一点点更多的信息,顶点类基本上只是存储两个整数。
tl,tr,bl,br,让瓦片知道左上角高度,右上角高度(等)。 - 我改名一切是一个更加清楚一点
此类只是为了找到我需要的,基本上每个角落呈现,一旦我有我可以找出如何呈现它在我自己的角度。
关于tl,tr等的说明,我应该找到角落吗?或双方的中心?我以前从未做过3d gfx。
- 编辑3--
我的工作多一点自己出去了,希望这是更接近:
private Map<Vertex, Tile> tiles = new HashMap<Vertex, Tile>();
public float getMode(float[] data)
{
int total = 0;
for (int i = 1; i < data.length; i++){
total += data[i];
}
return total/data.length;
}
protected void loadTiles(int px, int py){
//load tile from file
int FIXTHISTOSIZE = 10;
for (int x = px - (FIXTHISTOSIZE/2); x <= FIXTHISTOSIZE; x++){
for (int y = (py - FIXTHISTOSIZE/2); y <= FIXTHISTOSIZE; y++){
int aY = py - y;
int aX = px - x;
Tile tile = new Tile(aX, aY);
tiles.put(new Vertex(aX, aY) , tile);
}
}
for (int x = px - (FIXTHISTOSIZE/2); x <= FIXTHISTOSIZE; x++){
for (int y = py - (FIXTHISTOSIZE/2); y <= FIXTHISTOSIZE; y++){
int aY = py + y;
int aX = px + x;
Vertex pos = new Vertex(aX, aY);
float TOP_LEFT = -65536, TOP_RIGHT = -65536, BOTTOM_LEFT = -65536, BOTTOM_RIGHT = -65536; //TODO these should be 0, they are this number to demonstrate unloaded tiles for now
Tile TILE_CENTER = tiles.get(pos);
Tile TILE_TOP_RIGHT = tiles.get(new Vertex(aX + 1, aY + 1));
Tile TILE_TOP = tiles.get(new Vertex(aX, aY + 1));
Tile TILE_RIGHT = tiles.get(new Vertex(aX + 1, aY));
Tile TILE_BOTTOM_RIGHT = tiles.get(new Vertex(aX + 1, aY - 1));
Tile TILE_BOTTOM = tiles.get(new Vertex(aX, aY - 1));
Tile TILE_BOTTOM_LEFT = tiles.get(new Vertex(aX - 1, aY - 1));
Tile TILE_LEFT = tiles.get(new Vertex(aX - 1, aY));
Tile TILE_TOP_LEFT = tiles.get(new Vertex(aX - 1, aY + 1));
//TOP_RIGHT
if (TILE_TOP != null && TILE_TOP_RIGHT != null && TILE_RIGHT != null){
float[] dub = {TILE_TOP.getCenter(), TILE_TOP_RIGHT.getCenter(),TILE_RIGHT.getCenter(),TILE_CENTER.getCenter()};
TOP_RIGHT = getMode(dub);
}
//TOP_LEFT
if (TILE_TOP != null && TILE_TOP_LEFT != null && TILE_LEFT != null){
float[] dub = {TILE_TOP.getCenter(), TILE_TOP_LEFT.getCenter(),TILE_LEFT.getCenter(),TILE_CENTER.getCenter()};
TOP_LEFT = getMode(dub);
}
//TODO BOTTOM_RIGHT
//TODO BOTTOM_LEFT
TILE_CENTER.setConditions(TOP_LEFT, TOP_RIGHT, BOTTOM_LEFT, BOTTOM_RIGHT);
}
}
按照身高,你的意思是在Z方向,走向屏幕? Minicraft的源代码可能是一个简单的例子。 http://ludumdare.com/compo/ludum-dare-22/comment-page-1/?行动=预览&uid = 398 – Tenfour04
@ Tenfour04不完全,认为更像是在runescape瓷砖的基础。我可能会误认为你的例子有用,但我设计的游戏是3d,而不是2D。 – Bc1151