2D isometric: screen to tile coordinates

This topic is 2272 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

Recommended Posts

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!

Share on other sites
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.

Share on other sites
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)

Share on other sites

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.

1. 1
Rutin
24
2. 2
3. 3
JoeJ
20
4. 4
5. 5

• 9
• 46
• 41
• 23
• 13
• Forum Statistics

• Total Topics
631749
• Total Posts
3002031
×