| |
Someone Willing To Teach Me Isometric
Golem |
|

Really short legs
![Minigame Comp Winner Badge (1) [*]](https://archive.mfgg.net/html/badges/mcg1.gif) ![Minigame Comp Runner Up Badge (1) [*]](https://archive.mfgg.net/html/badges/mcr1.gif) ![Minigame Comp Third Place Badge (3) [*]](https://archive.mfgg.net/html/badges/mct3.gif)

Group: Members
Posts: 930
Member No.: 1603
Joined: 4-November 05
Status: (0d)
![[--]](style_images/mfgg2_skin/warn_nosuspend.gif)

|
Learning from an engine is possible, though it takes a lot of thinking. You basically look at the code and visualize what the code means for the player, taking it one event at a time.
Though, you said you didn't want an engine, and while I can't exactly provide a tutoral, I figured my thoughts might help:
Depth can be considered as the Z plane. The more positive the depth is, the farther back into the Z plane (away from the screen towards the back of the monitor, if you can visualize it) you are. Any movement caused by the use of the up or down arrow keys should change the depth.
The basic concept I've worked with uses shadows to define where the player is.
You put a shadow directly underneath the player, and leave it in place when the character jumps (a jump that should be programmed just like a 2D one, with the usual vspeed and gravity setup). That is, don't have the shadow jump with the charater, but still have the shadow move with the character in the arrow key directions. When the character comes back down and hits the shadow, set gravity and vspeed to 0 (this may require something like "if I'm below shadow.y, set vspeed and gravity to 0 plz," as opposed to "upon collision with shadow, stop").
The shadow also judges on what height the player is. First, blocks should consist of two parts as well--the top of the block and its shadow. I'm pretty sure this only works if they don't overlap, but instead should work like this: O (top of block, takes up Y space of 0 through 15) O (shadow of block, takes up Y space of 16 through 31) If the player's shadow comes in contact with a block's shadow, it should move up on the y plane but not change its depth, so that it is on top of the block. If the shadow is below the player's feet, allow the player to go forward. If not, put the shadow back under the player's feet where it was, beside the block's shadow. This method requires some compensation for moving up the y plane and jumping onto a block. Also, you should make sure the shadow's depth is close to the block's depth, else the player will walk onto the block when approaching from above it, speaking in terms of the y plane.
This method definetely has inherent flaws, some exceptions that you'll have to work out. This also means you have to make different objects for each height--for example, if you had 16X16 blocks, a block on the ground would have a shadow object that sets depth equal to the negative y location, and the top of the block would have depth equal to the negative of its y location plus 16. However, a block above that one would have a top that would have its depth equal to the negative of its y location plus 32. Also, I haven't used this engine much, so I haven't thought of a technique to handle floating blocks. It seems like it'd be possible to do easily and would only take a little thinking to do, though.
That's just the thinking I've taken to isometric engines. Sorry it's not much of a tutoral, but I don't really have anything polished to give as an example. Whenever you want to do something in Game Maker, just think of what you want to do and what you don't want to do. Be sure to take it in small steps.
This post has been edited by Golem on Jul 25 2006, 06:06 PM
--------------------
Quoth the raven, "~teehee~"
|
|
|
Morshu McPhereson |
|

Who's got the sweetest disposition?
![Sprite Comp Top 5 Badge (2) [*]](https://archive.mfgg.net/html/badges/sct2.gif)

Group: Members
Posts: 20184
Member No.: 685
Joined: 23-November 04
Status: (0d)
![[--]](style_images/mfgg2_skin/warn_nosuspend.gif)

|
| QUOTE (Golem @ Jul 25 2006, 05:59 PM) | Learning from an engine is possible, though it takes a lot of thinking. You basically look at the code and visualize what the code means for the player, taking it one event at a time.
Though, you said you didn't want an engine, and while I can't exactly provide a tutoral, I figured my thoughts might help:
Depth can be considered as the Z plane. The more positive the depth is, the farther back into the Z plane (away from the screen towards the back of the monitor, if you can visualize it) you are. Any movement caused by the use of the up or down arrow keys should change the depth.
The basic concept I've worked with uses shadows to define where the player is.
You put a shadow directly underneath the player, and leave it in place when the character jumps (a jump that should be programmed just like a 2D one, with the usual vspeed and gravity setup). That is, don't have the shadow jump with the charater, but still have the shadow move with the character in the arrow key directions. When the character comes back down and hits the shadow, set gravity and vspeed to 0 (this may require something like "if I'm below shadow.y, set vspeed and gravity to 0 plz," as opposed to "upon collision with shadow, stop").
The shadow also judges on what height the player is. First, blocks should consist of two parts as well--the top of the block and its shadow. I'm pretty sure this only works if they don't overlap, but instead should work like this: O (top of block, takes up Y space of 0 through 15) O (shadow of block, takes up Y space of 16 through 31) If the player's shadow comes in contact with a block's shadow, it should move up on the y plane but not change its depth, so that it is on top of the block. If the shadow is below the player's feet, allow the player to go forward. If not, put the shadow back under the player's feet where it was, beside the block's shadow. This method requires some compensation for moving up the y plane and jumping onto a block. Also, you should make sure the shadow's depth is close to the block's depth, else the player will walk onto the block when approaching from above it, speaking in terms of the y plane.
This method definetely has inherent flaws, some exceptions that you'll have to work out. This also means you have to make different objects for each height--for example, if you had 16X16 blocks, a block on the ground would have a shadow object that sets depth equal to the negative y location, and the top of the block would have depth equal to the negative of its y location plus 16. However, a block above that one would have a top that would have its depth equal to the negative of its y location plus 32. Also, I haven't used this engine much, so I haven't thought of a technique to handle floating blocks. It seems like it'd be possible to do easily and would only take a little thinking to do, though.
That's just the thinking I've taken to isometric engines. Sorry it's not much of a tutoral, but I don't really have anything polished to give as an example. Whenever you want to do something in Game Maker, just think of what you want to do and what you don't want to do. Be sure to take it in small steps. |
Thanks, that helps. I'm still slightly confused though, can you say how to do this step-by-step? You can AIM me via
MagikoopaMason
or
SexOnASandwich
|
|
|
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:
Track this topic
Receive email notification when a reply has been made to this topic and you are not active on the board.
Subscribe to this forum
Receive email notification when a new topic is posted in this forum and you are not active on the board.
Download / Print this Topic
Download this topic in different formats or view a printer friendly version.
[ Script Execution time: 0.0458 ] [ 14 queries used ] [ GZIP Enabled ] [ Server Load: 0.25 ]
| |