Jump to content

  • Log In with Google      Sign In   
  • Create Account

14 years ago on June 15th Gamedev.net was first launched! We want to thank all of you for being part of our community and hope the best years are ahead of us. Happy birthday Gamedev.net!

Xyle

Member Since 15 Feb 2009
Offline Last Active Dec 20 2012 07:25 PM
-----

Posts I've Made

In Topic: Picking a tile on a STAGGERED isometric map

18 December 2012 - 10:58 PM

I appreciate the help. It being the work week, I didn't get a chance to really put some time into any solution and I definitely am not going to post the embarassing hack I was attempting.
I did get a plug and play solution involving some math equations that are quite a bit beyond me that I will post for anyone running into the same situation. It works great!

dawsonk
http://www.kirupa.com/forum/showthread.php?376083-Picking-Tile-in-staggered-isometric-map
Maybe try something like this...
    var tileW = 64;
    var tileH = 32;
    var rows = 8;
    var cols = 4;
    for (var i = 0; i < rows; ++i) {
		    for (var j = 0; j < cols; ++j) {
				    tTile = _root.attachMovie("Tile", "R" + i + "C" + j, _root.getNextHighestDepth());
				    tTile._x = (tileW * j) + ((i % 2 == 1) ? 32 : 0);
				    tTile._y = (tileH / 2) * i;
		    }
    }
    onMouseDown = function () {
		    var ax, ay, bx, by;
		    var cx = _xmouse;
		    var cy = _ymouse;
		    var posX = (_xmouse / 32) >> 0;
		    var posY = (_ymouse / 16) >> 0;
		    if ((posX % 2) == (posY % 2)) {
				    ax = (posX) * 32;
				    ay = (posY + 1) * 16;
				    bx = (posX + 1) * 32;
				    by = (posY) * 16;
				    if (getPos(ax, ay, bx, by, cx, cy) < 0) {
						    trace(((posY / 1 >> 0) - 1) + " : " + ((posX / 2 >>0) + ((((posY / 1 >> 0) - 1) % 2 == 0) ? 0 : -1)));
				    } else {
						    trace((posY / 1 >> 0) + " : " + (posX / 2 >> 0));
				    }
		    } else {
				    ax = (posX) * 32;
				    ay = (posY) * 16;
				    bx = (posX + 1) * 32;
				    by = (posY + 1) * 16;
				    if (getPos(ax, ay, bx, by, cx, cy) < 0) {
						    trace(((posY / 1 >> 0) - 1) + " : " + (posX / 2 >>0));
				    } else {
						    trace((posY / 1 >> 0) + " : " + ((posX / 2 >> 0) +((((posY / 1 >> 0) - 1) % 2 == 0) ? -1 : 0)));
				    }
		    }
    };
    function getPos($ax, $ay, $bx, $by, $cx, $cy) {
		    // below = 1, above = -1, on = 0;
		    var slope = ($by - $ay) / ($bx - $ax);
		    var yIntercept = $ay - $ax * slope;
		    var cSolution = (slope * $cx) + yIntercept;
		    if (slope != 0) {
				    if ($cy > cSolution) {
						    return $bx > $ax ? 1 : -1;
				    }
				    if ($cy < cSolution) {
						    return $bx > $ax ? -1 : 1;
				    }
				    return 0;
		    }
		    return 0;
    }

In Topic: Picking a tile on a STAGGERED isometric map

16 December 2012 - 11:44 PM

Thanks for the reply,

Looking to see which tile is clicked by the mouse using the mouse x,y coordinates. There isn't any offsets, so screen 0,0 is map 0,0.

PARTNERS