Я работаю над изометрической игрой и не могу сделать алгоритм выбора плитки.
Вот как я отрисовываю свою изометрическую карту тайлов:
for (int x = 0; x < 50; x++) {
for (int y = 0; y < 50; y++) {
//Check if tile should be drawn
if (mapdata[x][y] == 1) {
float px = (x - y) * 20;
float py = (x + y) * 20 / 2;
...
window.draw(quad, &tile);
}
}
}
Я использую 2d массив для хранения того, какие плитки должны быть нарисованы.пример:
int mapdata[5][5]
{
0,1,1,1,0,
0,1,1,1,0,
0,1,1,1,0,
0,1,1,1,0,
0,1,1,1,0,
}
Вот как я сейчас выбираю плитки:
mh = the map tile height, in the above example this would be 5.
w = the width of the isometric tile.
int mouse_grid_y = (((mousey * 2) - ((mh * w) / 2) + mousex) / 2) / w;
int mouse_grid_x = (mousex - mouse_grid_y) / w;
Любая помощь будет принята с благодарностью.
Изображение для уточнения:
Это изображение, которое я сделал для моего игрового урока.Как вы можете видеть, есть одна плитка, обведенная зеленым, для этого мне и нужен алгоритм, я хочу отследить мышь и нарисовать этот зеленый «курсор» над плиткой, где находится мышь.
![img example](https://i.stack.imgur.com/yD8Zh.png)