Search tutorials
Tile Based World Part 1
The Engine
Lets Start
Right, set your page to 540x360 and then create 3 blank keyframes.
Now go to the library and click the blue new symbol button and select movie and call it man, press ok. Now draw you man 20x20, for now i recommend a circle.
The first bit of coding
on the first frame of the man movie add this
// vars
_root.floorx = Math.floor(_x/20);
_root.floory = Math.floor(_y/20);
_root.floorxl = Math.floor(_x/20)-1;
_root.flooryl = Math.floor(_y/20);
_root.floorxr = Math.floor(_x/20)+1;
_root.flooryr = Math.floor(_y/20);
_root.floorxu = Math.floor(_x/20);
_root.flooryu = Math.floor(_y/20)-1;
_root.floorxd = Math.floor(_x/20);
_root.flooryd = Math.floor(_y/20)+1;
// diags
_root.floorxlu= Math.floor(_x/20)-1;
_root.floorylu = Math.floor(_y/20)-1;
_root.floorxld= Math.floor(_x/20)-1;
_root.flooryld = Math.floor(_y/20)+1;
_root.floorxru= Math.floor(_x/20)+1;
_root.flooryru = Math.floor(_y/20)-1;
_root.floorxrd= Math.floor(_x/20)+1;
_root.flooryrd = Math.floor(_y/20)+1;
This is to set a coordinate to find out what the 8 20x20 squares around you are e.g a wall or floor
then add this under it
// rands
_root.rand = random (2)+1;
// left
if (eval("_root.map.M" add _root.flooryl)[_root.floorxl] == 0) {
_root.cangoleft = false;
} else if (eval("_root.map.M" add _root.flooryl)[_root.floorxl] == 1) {
_root.cangoleft = true;
}
// right
if (eval("_root.map.M" add _root.flooryr)[_root.floorxr] == 0) {
_root.cangoright = false;
} else if (eval("_root.map.M" add _root.flooryr)[_root.floorxr] == 1) {
_root.cangoright = true;
}
// UP
if (eval("_root.map.M" add _root.flooryu)[_root.floorxu] == 0) {
_root.cangoup = false;
} else if (eval("_root.map.M" add _root.flooryu)[_root.floorxu] == 1) {
_root.cangoup = true;
}
// Down
if (eval("_root.map.M" add _root.flooryd)[_root.floorxd] == 0) {
_root.cangodown = false;
} else if (eval("_root.map.M" add _root.flooryd)[_root.floorxd] == 1) {
_root.cangodown = true;
}
// diagonal
if (eval("_root.map.M" add _root.floorylu)[_root.floorxlu] == 0 and Key.isDown(Key.UP) and Key.isDown(Key.LEFT) and _root.rand == 1) {
_root.cangoleft = false;
} else if (eval("_root.map.M" add _root.floorylu)[_root.floorxlu] == 0 and Key.isDown(Key.UP) and Key.isDown(Key.LEFT) and _root.rand == 2) {
_root.cangoup = false;
}
if (eval("_root.map.M" add _root.flooryld)[_root.floorxld] == 0 and Key.isDown(Key.DOWN) and Key.isDown(Key.LEFT) and _root.rand == 1) {
_root.cangoleft = false;
} else if (eval("_root.map.M" add _root.flooryld)[_root.floorxld] == 0 and Key.isDown(Key.DOWN) and Key.isDown(Key.LEFT) and _root.rand == 2) {
_root.cangodown = false;
}
if (eval("_root.map.M" add _root.flooryrd)[_root.floorxrd] == 0 and Key.isDown(Key.DOWN) and Key.isDown(Key.RIGHT) and _root.rand == 1) {
_root.cangoright = false;
} else if (eval("_root.map.M" add _root.flooryrd)[_root.floorxrd] == 0 and Key.isDown(Key.DOWN) and Key.isDown(Key.RIGHT) and _root.rand == 2) {
_root.cangodown = false;
}
if (eval("_root.map.M" add _root.flooryru)[_root.floorxru] == 0 and Key.isDown(Key.UP) and Key.isDown(Key.RIGHT) and _root.rand == 1) {
_root.cangoright = false;
} else if (eval("_root.map.M" add _root.flooryru)[_root.floorxru] == 0 and Key.isDown(Key.UP) and Key.isDown(Key.RIGHT) and _root.rand == 2) {
_root.cangoup = false;
}
the first bit "//rands" sets a random var for the diagonal cango hittest to stop you going through the walls and the rest is to check the for the collision
then add a second frame with this action
gotoAndPlay (1);
And right click on the man movie in the library and select linkage and export this symbol and call it man
on the first frame of the man movie add this
// vars _root.floorx = Math.floor(_x/20); _root.floory = Math.floor(_y/20); _root.floorxl = Math.floor(_x/20)-1; _root.flooryl = Math.floor(_y/20); _root.floorxr = Math.floor(_x/20)+1; _root.flooryr = Math.floor(_y/20); _root.floorxu = Math.floor(_x/20); _root.flooryu = Math.floor(_y/20)-1; _root.floorxd = Math.floor(_x/20); _root.flooryd = Math.floor(_y/20)+1; // diags _root.floorxlu= Math.floor(_x/20)-1; _root.floorylu = Math.floor(_y/20)-1; _root.floorxld= Math.floor(_x/20)-1; _root.flooryld = Math.floor(_y/20)+1; _root.floorxru= Math.floor(_x/20)+1; _root.flooryru = Math.floor(_y/20)-1; _root.floorxrd= Math.floor(_x/20)+1; _root.flooryrd = Math.floor(_y/20)+1;
This is to set a coordinate to find out what the 8 20x20 squares around you are e.g a wall or floor
then add this under it
// rands
_root.rand = random (2)+1;
// left
if (eval("_root.map.M" add _root.flooryl)[_root.floorxl] == 0) {
_root.cangoleft = false;
} else if (eval("_root.map.M" add _root.flooryl)[_root.floorxl] == 1) {
_root.cangoleft = true;
}
// right
if (eval("_root.map.M" add _root.flooryr)[_root.floorxr] == 0) {
_root.cangoright = false;
} else if (eval("_root.map.M" add _root.flooryr)[_root.floorxr] == 1) {
_root.cangoright = true;
}
// UP
if (eval("_root.map.M" add _root.flooryu)[_root.floorxu] == 0) {
_root.cangoup = false;
} else if (eval("_root.map.M" add _root.flooryu)[_root.floorxu] == 1) {
_root.cangoup = true;
}
// Down
if (eval("_root.map.M" add _root.flooryd)[_root.floorxd] == 0) {
_root.cangodown = false;
} else if (eval("_root.map.M" add _root.flooryd)[_root.floorxd] == 1) {
_root.cangodown = true;
}
// diagonal
if (eval("_root.map.M" add _root.floorylu)[_root.floorxlu] == 0 and Key.isDown(Key.UP) and Key.isDown(Key.LEFT) and _root.rand == 1) {
_root.cangoleft = false;
} else if (eval("_root.map.M" add _root.floorylu)[_root.floorxlu] == 0 and Key.isDown(Key.UP) and Key.isDown(Key.LEFT) and _root.rand == 2) {
_root.cangoup = false;
}
if (eval("_root.map.M" add _root.flooryld)[_root.floorxld] == 0 and Key.isDown(Key.DOWN) and Key.isDown(Key.LEFT) and _root.rand == 1) {
_root.cangoleft = false;
} else if (eval("_root.map.M" add _root.flooryld)[_root.floorxld] == 0 and Key.isDown(Key.DOWN) and Key.isDown(Key.LEFT) and _root.rand == 2) {
_root.cangodown = false;
}
if (eval("_root.map.M" add _root.flooryrd)[_root.floorxrd] == 0 and Key.isDown(Key.DOWN) and Key.isDown(Key.RIGHT) and _root.rand == 1) {
_root.cangoright = false;
} else if (eval("_root.map.M" add _root.flooryrd)[_root.floorxrd] == 0 and Key.isDown(Key.DOWN) and Key.isDown(Key.RIGHT) and _root.rand == 2) {
_root.cangodown = false;
}
if (eval("_root.map.M" add _root.flooryru)[_root.floorxru] == 0 and Key.isDown(Key.UP) and Key.isDown(Key.RIGHT) and _root.rand == 1) {
_root.cangoright = false;
} else if (eval("_root.map.M" add _root.flooryru)[_root.floorxru] == 0 and Key.isDown(Key.UP) and Key.isDown(Key.RIGHT) and _root.rand == 2) {
_root.cangoup = false;
}
the first bit "//rands" sets a random var for the diagonal cango hittest to stop you going through the walls and the rest is to check the for the collision
then add a second frame with this action
gotoAndPlay (1);And right click on the man movie in the library and select linkage and export this symbol and call it man
| » Level Intermediate |
|
Added: 2002-03-18 Rating: 5 Votes: 85 |
| » Author |
| Steven Richardson |
| » Download |
| Download the files used in this tutorial. |
| Download (20 kb) |
| » Forums |
| More help? Search our boards for quick answers! |
-
You must have javascript enabled in order to post comments.


Comments
There are no comments yet. Be the first to comment!