necesito una ayuda. por razones del multijugador es mejor proyectar los jugadores, enemigos, balas, fxs, etc etc,, utilizando draw, pero el caso esta en que, al utilizar el draw el depth (o capa o como suene mejor decirlo ._. ) de las proyecciones no se valdrían del depth de los objetos la cual es depth=-y;...
asi que. una forma para reparar esto es anotar en la lista de proyecciones los objetos que esten en una posicion "Y" menor a mayor
para que las proyecciones tengan su respectivo depth.
se que se puede lograr con uno o mas 'for' pero no me gustaria que fuera tan pesado.
agradeceria una ideas o mejores aun.
grasias por si tiempo :3
/////////////////////////////////////////////// [ SOLUCION ] ///////////////////////////////////////////////
var Total= instance_number( Player) + instance_number( Enemy);
// asignar los valores inst
for( a=0; a<instance_number(Player); a++ )begin
Inst[ a ]=instance_find(Player, a);
Insttxt[ a ]="Player";
end
for( b=0; b<instance_number(Enemy); b++ )begin
if( instance_exists( instance_find(Enemy, b) ) )begin
Inst[ instance_number(Player)+b ]=instance_find(Enemy, b);
Insttxt[ instance_number(Player)+b ]="Enemy";
end
end
// ordenar instances
// refresar el nulificador
for( e=0; e<Total; e++ )begin Nulificador[e]=0; end
// analizador
for( c=0; c<Total; c++ )begin
for( d=0; d<Total; d++ )begin
// esto encuentra el valor mas alto y lo guarda
if( CantidadAlta < Inst[ d ].y )begin
if( Nulificador[d]=0 )begin
CantidadAlta= Inst[ d ].y; // esto es para seguir analizando
Instancia= Inst[ d ]; // esto guarda el id del obj para después enviarlo por la buffer con su orden.
TextoOBJ= Insttxt[ d ]; // esto es para determinar que tipo de obj. (se que se puede hacr de una mejor forma)
Lugar= d; // esto guarda el lugar seleccionado
end
end
// hacer el intercambio y nular la opcion escogida
if( d = Total-1 )begin
Nulificador[ Lugar ]= 1;
Inst_ext[ c ]= Instancia;
Insttxt_ext[ c ]= TextoOBJ;
end
end
CantidadAlta=0;
end
// enviar informacion ordenada
for( f=0; f<Total; f++ )begin
var Sm= (Total-1)-f;
switch( Insttxt_ext[ Sm ] )begin
case "Player" : PlayerBuffer_Data(' buffer que etamos utilizando ' , Inst_ext[ Sm ]); break;
case "Enemy" : EnemyBuffer_Data(' buffer que etamos utilizando ' , Inst_ext[ Sm ]); break;
end
end
Hola KayasamiX!
Vi algo similar hecho por Friendly Cosmonaut en YouTube.
Este es el link: https://www.youtube.com/watch?v=8QCgN2RDA9I&list=PLSFMekK0JFgx0F31GzbW_Cg2GeM0ErwLP
Lo que ella hace es crear una ds_grid de ancho 2 y alto n que almacena el objeto que ella quiere dibujar y la "y" (o depth) en que quiere dibujar ese objeto. Luego ordena la grid según la depth y desde un objeto maestro dibuja los otros objetos 1 a 1.
En tu caso (como no usas objetos) deberás crear una ds_grid de ancho 5, para que almacene: sprite, sub-imagen, X, Y, depth por cada sprite que quieras dibujar. Después ordenas la ds_grid según la "depth" y en el draw event de un objeto maestro dibujas cada sprite en orden.
Saludos
gracias amigo :) esto me puede dar ideas muy buenas. los 'grids' son increíbles, pero mas pesados que los 'for' pero eficaces.
yo ya he solucionado esto así que, editare la publicasiòn para adjuntar el código. espero que les paresca guay.
grasas. agradeciendo. abrazos. :)