I’ve been messing around with drawing isometric tiles and I’m a bit stuck on mouse collisions. I found this article on isometric tiles: http://clintbellanger.net/articles/isometric_math/
Here’s my rendering code:
for(int x = 0; x < map.width(); x++){
for(int y = map.height(); y >= 0; y--){
Sprite s = map.getSpriteAt(x, y);
int xa = (x - y) * (s.width / 2);
int ya = (x + y) * (s.height / 2);
Point p = mouseToIsoTile(mx, my, s.width, s.height);
if(p.x != x || p.y != y) screen.renderSprite(s, xa, ya);
}
}
The onTile() methods takes in the mouse x,y coords as well as the sprite width and height.
Here’s the onTile() method:
public Point onTile(int xa, int ya, int width, int height){
int x = (xa / (width / 2) + ya / (height / 2)) / 2;
int y = (ya / (height / 2) - (xa / (width/ 2))) / 2;
return new Point(x, y);
}
When I run the code to hide the tile below the mouse I get this:
You can see the hidden tile is somewhat accurate, but it seems off and I cant seem to figure out why.