•      Sign In
• Create Account

# Xyle

Member Since 15 Feb 2009
Offline Last Active Dec 10 2013 09:03 PM

### 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.

### In Topic: Mouse Click Coords to Tile Coordinates

09 February 2010 - 02:25 PM

That formula is close but its not returning the correct rows or cols.

I did got this from Javagaming.org Dishmoth, its a java solution but it reflects the proper math I needed.
int x0 = 144 + (tileWidth/2); //144 is the X coord where I start drawing the first tile
int y0 = 2; //2 is the Y coord where I start drawing the first tile
int i = (int)Math.floor((tY-y0)/(double)tileHeight - (tX-x0)/(double)tileWidth); //Find row
int j = (int)Math.floor((tY-y0)/(double)tileHeight + (tX-x0)/(double)tileWidth); //Find col

This code works pefectly. One of the main problems I was having, I believe is that I start the map drawing at 144,2 not 0,0. The math is basically the same as yours though.

Thanks for the help and the input, I really, really appreciate it!

### In Topic: A few post for my new Game!

15 January 2010 - 05:28 PM

The sprites are created using a model and exporting certain scenes to an image format. The Background, smoke, sky, bullets and such are created from scratch in an image processing app.

Its almost as much fun creating the elements of a game as it is creating the code the make the game work.

Heres the latest plane I created for the game, which I hope to get online this weekend.

A German BF109 WWII Fighter

### In Topic: A few post for my new Game!

12 January 2010 - 12:12 PM

Thank you very much, I appreciate it.

PARTNERS