Bueno, tiempo sin venir...... Vengo a mostrarles una duda que siempre me llega en los peores momentos Y_Y

Tengo 3 objetos:
1- Mi personaje, su depth es de -2
2- Aliados, su depth es de -1
3- El hud, las vidas y eso, su depth es de -10 (Es la que esta encima de todo)

Bueno, todo bien, en el Draw event de el objeto 2, los Aliados, tengo esto:

if located=1 and distance_to_object(P1)>104
draw_sprite_ext(AnotherPlayers,1,P1.x,P1.y,1,1,point_direction(P1.x,P1.y,x,y),c_white,1)

draw_sprite_ext(Hp,2,x-7.9,y-32,0.2.6,0.2.6,0,c_white,0.8)
draw_sprite_stretched(Hp,0,x-7,y-32,life/maxlife*29,3.5)


Obviamente funciona bien pero..... El objeto 1, mi personaje, pasa sobre el (Por el depth)..... Trate de que el objeto 2 dibuje sus sprites en el objeto 3 EJ:

with Hud
{if located=1 and distance_to_object(P1)>104
draw_sprite_ext(AnotherPlayers,1,P1.x,P1.y,1,1,point_direction(P1.x,P1.y,x,y),c_white,1)

draw_sprite_ext(Hp,2,x-7.9,y-32,0.2.6,0.2.6,0,c_white,0.8)
draw_sprite_stretched(Hp,0,x-7,y-32,life/maxlife*29,3.5)}


Pero no posee dichas variables...... Por eso el titulo que coloque, se me ocurre que puede tener dos maneras de lograrse....

Podria utilizar variables globales para las vidas pero no es la mejor solucion..... Alguien tiene una solucion? siempre busco de improvisar pero esto es algo raro xDD (El depth casi siempre fue un problema en GMK para mi xDD)

¿Mmm pero qué quieres hacer? ni idea de por qué quieres dibujar los sprites de un objeto en el evento draw de otro.

Cita de: TLT96 en Noviembre 28, 2013, 06:36:28 PM
Obviamente funciona bien pero..... El objeto 1, mi personaje, pasa sobre el (Por el depth).....

¿Qué tiene eso de malo?el objeto 1 pasa por encima porque eso es lo que le indicas al ponerle profundidad de -2. SI no quieres que pase por encima, ¿por qué le pones profundidad de -2? Nada impide que dos objetos tengan la misma profundidad

Según el título del post "Dibujar sprite en el depth de otro objeto", yo lo que entiendo es que quieres dibujar dos objetos con la misma profundidad, por ejemplo, para el objeto1

if depth != aliados.depth { depth = aliados.depth }



"¿Mmm pero qué quieres hacer? ni idea de por qué quieres dibujar los sprites de un objeto en el evento draw de otro."
-El objeto de el aliado se supone que dibuja una barra de vida, y mi personaje lo pisotea (Para eso dibujar la vida en un object con depth sobre todos).

"Nada impide que dos objetos tengan la misma profundidad"
-De hecho si, alli interviene cual se creo primero.

Y digamos que no solo hay "1" aliado hay mas de 100 osea..... Crear variables globales para cada uno no es muy ingenioso..... Me explique bien?

Se que debe de haber una solucion, Game Maker siempre las tiene, no tiene limites :D (Solo models High Poly en 3D)

Simplemente crea un objeto control que tenga -99999 de depth, allí dibujas todo lo relacionado con la HUD y cosas que quieres que estén hasta arriba . Para llamar a variables de otro objeto usas un ".", algo así "obj_player.vida".

Creo que  no me entienden todavia  :-[

Que les parece si me hacen un engine?
3 Objetos solamente

El personaje, El aliado y el Hud.

-El objeto Aliado tiene que ser colocado 100 veces en una room
-El jugador puede pisotear (Estar sobre el sprite de los aliados)
-Los aliados tienen que tener encima una barra de vida (No hace falta que la hagan, solo hagan una barra verde) que debe pisar al jugador (sobre el sprite de el jugador)

Ya alli se sobreentiende que no puede dibujarse asi:
oAliado.hp ya que hay mas de 100 (Tampoco sirve con ID ya que se crearan random por el room....)

Ahora si me explique? Esta duda es mindfucker Y_Y

Uh siendo ese el caso simplemente pon esto en el evento draw de la hud.
[gml]
with(obj_aliado){
    draw_sprite_ext(Hp,2,x-7.9,y-32,0.2.6,0.2.6,0,c_white,0.8)
    draw_sprite_stretched(Hp,0,x-7,y-32,life/maxlife*29,3.5)
}
[/gml]