GLBasic forum

Main forum => Tutorials => Topic started by: equinox on 2009-Feb-08

Title: Z-DEPTH ? if you can, I will very happy
Post by: equinox on 2009-Feb-08
Hi,
is an example of how a character goes behind a rock and is covered. As in games rpg?
Title: Re: Z-DEPTH ?
Post by: Moru on 2009-Feb-08
Look at Mappyloader on my homepage, gamecorner.110mb.com (http://gamecorner.110mb.com). If you set a stone or a tree on layer 1, the player will be in front of the stone/tree when he is lower down, if he goes up he will be covered behind the stone/tree.

Or if you just want it a bit easier, if you want something to cover something else, draw the sprite you want on top, last.

eg:
Code (glbasic) Select
DRAWSPRITE player, 50, 50
DRAWSPRITE stone, 50, 50


For this you need to sort your objects on Y coordinate. Look for the example SORTARRAY in the help.
Title: Re: Z-DEPTH ?
Post by: Schranz0r on 2009-Feb-09
hehe

Use layers:

Code (glbasic) Select
// L = Layer ( 3 layers or something more :D )
Level[L][X][Y]

FOR L = 0 TO 2 // 3 layers
    FOR X = 0 TO 99 // 100 X-Tiles
        FOR Y = 0 TO 99 // 100 Y-Tiles

            SELECT L
                CASE 0 // behind the Player layer
                    DRAWSPRITE Level[L][X][Y], X*Tilesize, Y*Tilesize
                CASE 1 // Player and collision layer
                    DRAWSPRITE Level[L][X][Y], X*Tilesize, Y*Tilesize
                    CheckCollision()
                    Player() // Your player drawing and movement
                CASE 2 // the "coverlayer"
                    DRAWSPRITE Level[L][X][Y], X*Tilesize, Y*Tilesize
            ENDSELECT

        NEXT
    NEXT
NEXT


I can make a little example, if you want?
Title: Re: Z-DEPTH ?
Post by: Moru on 2009-Feb-09
Schranzor, if you use layers you can't stand in front of a stone, the stone will still cover the player. The example picture from the mappy loader below shows what I mean.

[attachment deleted by admin]
Title: Re: Z-DEPTH ?
Post by: Kitty Hello on 2009-Feb-09
No!! You sort by the bottom line of a sprite :P
Title: Re: Z-DEPTH ? (I can make a little example, if you want?)
Post by: equinox on 2009-Feb-12
Quote from: Schranz0r on 2009-Feb-09
hehe

Use layers:

Code (glbasic) Select
// L = Layer ( 3 layers or something more :D )
Level[L][X][Y]

FOR L = 0 TO 2 // 3 layers
    FOR X = 0 TO 99 // 100 X-Tiles
        FOR Y = 0 TO 99 // 100 Y-Tiles

            SELECT L
                CASE 0 // behind the Player layer
                    DRAWSPRITE Level[L][X][Y], X*Tilesize, Y*Tilesize
                CASE 1 // Player and collision layer
                    DRAWSPRITE Level[L][X][Y], X*Tilesize, Y*Tilesize
                    CheckCollision()
                    Player() // Your player drawing and movement
                CASE 2 // the "coverlayer"
                    DRAWSPRITE Level[L][X][Y], X*Tilesize, Y*Tilesize
            ENDSELECT

        NEXT
    NEXT
NEXT


I can make a little example, if you want?

Yes,tnk1000. If yuo can,if you can, I will very happy!!!
Title: Re: Z-DEPTH ?
Post by: equinox on 2009-Feb-12
In yoUr exemple, I dont FIND guy.png.

Quote from: Moru on 2009-Feb-08
Look at Mappyloader on my homepage, gamecorner.110mb.com (http://gamecorner.110mb.com). If you set a stone or a tree on layer 1, the player will be in front of the stone/tree when he is lower down, if he goes up he will be covered behind the stone/tree.

Or if you just want it a bit easier, if you want something to cover something else, draw the sprite you want on top, last.

eg:
Code (glbasic) Select
DRAWSPRITE player, 50, 50
DRAWSPRITE stone, 50, 50


For this you need to sort your objects on Y coordinate. Look for the example SORTARRAY in the help.