你好,我有以下两个等距地砖:等轴测图瓷砖地图 - 有更大尺寸的瓷砖?
普通瓷砖(水):
石瓦:
我需要添加一些瓦片像我的游戏板上有一块岩石砖,但问题是,像这块岩石这样的砖需要更高的高度。
目前,岩石瓷砖有更大的高度18px。 我试图把岩石分成3块,但它看起来很丑,因为你可以在岩石上看到地砖的线条。
目前,该板是这样的:
board http://gyazo.com/49f6549404a934919b33c30b94b9c88c.png
正如你所看到的,因为高度差的瓷砖也会有不同的位置。
我的图形代码层是由图层设计的,其中有一个名为Board的图层,而Board图层包含一个名为Nature的图层,该图层负责岩石,花朵等。
我的板图中:
@Override
public void render(Graphics g) {
g.translate(this.translate.getX(), this.translate.getY());
for (int i = 0; i < tiles[0].length; i++) {
for (int j = 0; j < tiles[1].length; j++) {
int x = (j * sprite.getWidth()/2) - (i * sprite.getWidth()/2);
int y = (j * sprite.getHeight()/2) + (i * sprite.getHeight()/2);
this.tiles[i][j].render(g, x, y);
}
}
// rendering rocks and so on..
this.nature.render(g);
}
这就是我如何呈现自然层:
@Override
public void render(Graphics g) {
for (int i = 0; i < this.tiles[0].length; i++){
for (int j = 0; j < this.tiles[1].length; j++){
if (this.tiles[i][j] == null)
continue;
int width = this.tiles[i][j].getWidth();
int height = this.tiles[i][j].getHeight();
int x = (j * width/2) - (i * width/2);
int y = (j * height/2) + (i * height/2);
g.drawImage(this.tiles[i][j], x, y);
}
}
}
我已经试过了18减去高度,但仍然没有运气,它仍然混乱。 有没有任何正确方法确实绘制比实际大小更大的图块?
我这样做,但看看会发生什么:http://gyazo.com/d7c772a760001d4bb4c9bcf6fd96ddc4,他们都有相同的Y偏移量,他们得到不同的点。我把水砖做成黑色,看看真正的指标在哪里。第一个是[0] [0]秒是[5] [5]。 \t \t tiles [5] [5] = new Tile(0,-112,Tiles.ROCK); \t \t tiles [0] [0] = new Tile(0,-112,Tiles.ROCK); – Artemkller545
从你的代码片段中很难判断出你正在使用的是什么类型的坐标系,以及你的图形处于什么状态(你正在使用translate,当你调用下一个渲染方法时,它并不会自动撤消它。 *栈*)。你需要改变你的公式x/y。瓷砖的大小(概念上)完全相同,与“超过”的数量无关 - 不会超出分配的大小。内部的for-loop使用错误的数组长度:它应该是tiles [i] .length而不是tiles [1] .length(它可能适用,因为两个维度当前都是相同的)。 – Durandal
查看直播源https://github.com/BenBeri/GoPirate/tree/master/src/com/il/ben/go/pirate/graphics – Artemkller545