Здравствуйте, у меня есть следующие две изометрические плитки:
Обычный тайл (вода):
Каменная плитка:
Мне нужно добавить несколько плиток, например плитку с камнем, на игровое поле, но проблема в том, что для некоторых плиток, таких как этот камень, требуется больший уровень высоты.
В настоящее время тайл камня имеет большую высоту на 18 пикселей. Я попытался разделить камень на 3 плитки, но это выглядит ужасно, так как вы можете видеть линии напольной плитки на камне.
На данный момент доска выглядит так:
(источник: gyazo.com)
Как видите, из-за разницы в высоте плитки будут иметь разное расположение.
Мой слой графического кода спроектирован слоями, где есть слой 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, но все равно не повезло, все равно беспорядок. Существуют ли какие-либо правильные способы рисования тайлов, которые больше их реального размера?