Unity Spain

Post Antiguos => General (Antiguo) => Mensaje iniciado por: power en Abril 27, 2018, 02:55:57 PM

Título: Generación personaje 2d
Publicado por: power en Abril 27, 2018, 02:55:57 PM
Hola a todos.
 
Estoy haciendo un juego 2d para movil, quiero hacer un pequeño configurador de personaje, en el cual podrás cambiar el pelo, la cara y alguna cosa mas. ¿Es posible que en el momento en que el usuario termine la generación, yo pueda generar un sprite que combinará las capas que haya seleccionado (pelo + cara + cabeza), y lo guarde en el dispositivo? De esta manera, cuando se cargue el perfil, puedo cargar ese sprite, y ya meterlo en el esqueleto que voy a usar para animarlo.
 
Si alguien puede decirme por donde tirar para hacer esto, lo agradecería.
 
Saludos
 
 
Título: Generación personaje 2d
Publicado por: Braltor en Abril 27, 2018, 03:45:54 PM
se me ocurren dos formas de hacerlo: tomandole una foto con la camara, o dibujando las partes sobre un bitmap... aunque con la camara tienes q volver transparentes los pixeles del fondo
Título: Generación personaje 2d
Publicado por: power en Abril 27, 2018, 05:29:41 PM
Gracias tron. He encotnrado algo aqui:
 
https://answers.unity.com/questions/1008802/merge-multiple-png-images-one-on-top-of-the-other.html (https://answers.unity.com/questions/1008802/merge-multiple-png-images-one-on-top-of-the-other.html)
 
Cuando averigüe como hacerlo, lo postearé por aquí
 
un saludo!
Título: Generación personaje 2d
Publicado por: francoe1 en Abril 27, 2018, 10:49:28 PM
Creas una nueva Texture2D luego ordenas todas las imágenes situando las últimas al inicio de un arreglo, luego recorres el arreglo y copias los pixeles a la textura nueva, esto requiere de que todas las imágenes tengan un mismo tamaño, y si no tendrías que realizar un offset.
 
 
Título: Generación personaje 2d
Publicado por: Igor en Abril 28, 2018, 12:11:44 PM
algo asi:
 


Texture2D mixInOne(Texture2D cabeza, Texture2D cara, Texture2D pelo) {
texture2D result = new Texture2(cabeza.width, cabeza.height);//nueva textura
for (int x = 0; x < cabeza.width; x++) {
       for (int y = 0; y < cabeza.height; y++) {      
      result.SetPixel(x,y, cabeza.GetPixel(x,y));//poner primera "capa" (cabeza)
      if  (cara.GetPixel(x,y).a > 0.5f) {//color alpha mayor...
         result.SetPixel(x,y, cabeza.GetPixel(x,y));//poner segunda "capa" (cara)
      } else if (pelo.GetPixel(x,y).a > 0.5f) {
         result.SetPixel(x,y, cabeza.GetPixel(x,y));//poner tercera "capa" (pelo)
      }
   }
}
return result;
}

 
 
Título: Generación personaje 2d
Publicado por: francoe1 en Abril 28, 2018, 01:20:09 PM
Cita de: Igor date=1524910304algo asi:
   
   


Texture2D mixInOne(Texture2D cabeza, Texture2D cara, Texture2D pelo) {
texture2D result = new Texture2(cabeza.width, cabeza.height);//nueva textura
for (int x = 0; x < cabeza.width; x++) {
       for (int y = 0; y < cabeza.height; y++) {      
      result.SetPixel(x,y, cabeza.GetPixel(x,y));//poner primera "capa" (cabeza)
      if  (cara.GetPixel(x,y).a > 0.5f) {//color alpha mayor...
         result.SetPixel(x,y, cabeza.GetPixel(x,y));//poner segunda "capa" (cara)
      } else if (pelo.GetPixel(x,y).a > 0.5f) {
         result.SetPixel(x,y, cabeza.GetPixel(x,y));//poner tercera "capa" (pelo)
      }
   }
}
return result;
}

   
       
   


Claro, pero tenes que tener en cuenta la posición de los sprite Cara, Pelo, Cabeza, definir los bounds y luego copiar los pixeles, si no se copiaria mal-
 
Igual, yo en vez de definir las cosas tomaria un arreglo de textura, mas posición, mas escala, mas rotación.
Título: Generación personaje 2d
Publicado por: power en Mayo 05, 2018, 01:07:20 PM
Muchas gracias, esto creo que es lo que probaré. Cuando lo tenga hecho pasaré por aquí y lo comentaré.
 
Gracias a todos por la ayuda