Hello!
I have been looking and trying for quite a while now, but can't seem to work out an algorithm for figuring out which tile is selected on a staggered isometric map using 64x32 tiles with a diamond shape inside.
Here is a pic of my map...
http://i195.photobuc...taggeredMap.png
The first row is drawn, then the x is offset to the right by 32 and the next row is drawn.
Anyone have any good math skills to throw some algorithms my way for this?
Thanks for any help!
PS: My math isn't exactly top notch, so please keep that in mind. Smiley
Picking a tile on a STAGGERED isometric map
Page 1 of 14 Replies - 418 Views - Last Post: 18 December 2012 - 09:58 PM
Replies To: Picking a tile on a STAGGERED isometric map
#2
Re: Picking a tile on a STAGGERED isometric map
Posted 16 December 2012 - 09:19 PM
What platform are you running this on?
#3
Re: Picking a tile on a STAGGERED isometric map
Posted 16 December 2012 - 09:37 PM
I'm using flash for an isometric game, but the algorithm can be pretty generic and applied in any language.
I had some formulas donated by a contributor for a standard diamond shaped isometric map that works great, but since I changed the map style to a staggered isometric map, chopping those formulas up to work is making my receding hair line, recede completely! Hehehehe.
Thanks!
I had some formulas donated by a contributor for a standard diamond shaped isometric map that works great, but since I changed the map style to a staggered isometric map, chopping those formulas up to work is making my receding hair line, recede completely! Hehehehe.
Thanks!
#4
Re: Picking a tile on a STAGGERED isometric map
Posted 16 December 2012 - 10:49 PM
Did you understand the initial 'algorithm'? Do you have any ideas at all how to approach it?
#5
Re: Picking a tile on a STAGGERED isometric map
Posted 18 December 2012 - 09: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.co...d-isometric-map
Maybe try something like this...
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.co...d-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;
}
Page 1 of 1
|
|

New Topic/Question
Reply




MultiQuote





|