你好,我有以下兩個等距地磚:等軸測圖瓷磚地圖 - 有更大尺寸的瓷磚?
普通瓷磚(水):
石瓦:
我需要添加一些瓦片像我的遊戲板上有一塊岩石磚,但問題是,像這塊岩石這樣的磚需要更高的高度。
目前,岩石瓷磚有更大的高度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