2D isometric: screen to tile coordinates

Started by
2 comments, last by Dr_Asik 11 years, 11 months ago
I'm writing an isometric 2D game and I'm having difficulty figuring precisely on which tile the cursor is. Here's a drawing:

[Not allowed to post pictures :( here's a link : http://imageshack.us.../tilespace.png/ ]

where xs and ys are screen coordinates (pixels), xt and yt are tile coordinates, W and H are tile width and tile height in pixels, respectively.

The best I could figure out so far is this:


int xtemp = xs / (W / 2);
int ytemp = ys / (H / 2);
int xt = (xs - ys) / 2;
int yt = ytemp + xt;


This seems almost correct but is giving me a very imprecise result, making it hard to select certain tiles, or sometimes it selects a tile next to the one I'm trying to click on. I don't understand why and I'd like if someone could help me understand the logic behind this.

Thanks!
Advertisement
I wrote an article on the subject a while ago: http://www.wildbunny.co.uk/blog/2011/03/27/isometric-coordinate-systems-the-modern-way/

Hope it helps!

Cheers, Paul.
Use a mouse map to make things way easier: Isometric 'n' Hexagonal Maps Part I
(Skip down to the part labeled 'Mouse Matters' and things will become clear)

I wrote an article on the subject a while ago: http://www.wildbunny...the-modern-way/

Hope it helps!

Cheers, Paul.
Wow, such a simple approach. I ended up using a transformation matrix composed of a translation, a rotation and a scaling, so that getting going back-and-forth between pixels and tile coordinates is as simple as applying the transformation or its inverse; but this seems even simpler.

This topic is closed to new replies.

Advertisement