Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Temas recientes

Controlar transparencia de objetos

Iniciado por Mcloud, Abril 20, 2019, 02:48:26 PM

Tema anterior - Siguiente tema
Buenas, 
 
Sigo con el RPG en 2D, me cree unos prefabs de arboles, el tronco rígido para que no lo atraviese y la copa siempre por encima con un script que controla el numero de layer por si hay varios juntos(este script es de los vídeos de H***r profe que me parecen geniales)
 
Total todo va bien, pero quisiera que cuando mi personaje pasa por debajo del árbol, tal que así
 

 
Quisiera que la copa se volviera un poco transparente y así poder ver al personaje sin problema, he puesto un collider como triguer, y detecto cuando entra y sale sin problema, pero por mas que intento cambiar la transparencia no hay manera...
 
Muchas gracias!!

Abril 21, 2019, 12:47:17 PM #1 Ultima modificación: Abril 21, 2019, 12:52:12 PM por Antonio
Hola Mcloud.
 
 
 
Es posible cambiar la opacidad, pero es algo que también depende un poco de qué shader está usando ese árbol.


Por ejemplo, entre los shaders "Standard" de unity, hay 4 opciones.
 


  •    Sólido, el árbol no tendría opacidad (tampoco por los bordes, sería como una pegatina cuadrada). Los cambios en la transparencia no tendrían efecto alguno.


  •    Cutout, me parece que es el que está usando ese árbol, esta es la transparencia binaria, de "ó es opaco, o es inivisble", pero no hay degradado ni suavizado en los bordes, si vas cambiando la transparencia, seguramente el objeto pasará de ser visible a totalmente invisible en algún punto (depende de la textura). 


  •    Fade es más la transparencia tradicional, creo que es la que buscas, efectivamente cambiar el valor alpha, irá mezclando la textura del árbol con lo que haya detrás (sería como la sombra del árbol). 


  •    La última es Transparent que es muy similar a Fade pero "recuerda" la textura al completo para que otros efectos se sigan aplicando incluso en las zonas con transparencia, como los reflejos en un cristal.


 
 
En todos ellos, se podría cambiar la transparencia en el "material", (cogido a través del componente renderer), aunque cambiar la transparencia no tiene el mismo efecto en cada shader.
 
https://docs.unity3d.com/ScriptReference/Material-color.html  ("color" es un vector4 que hace referencia al color del pixel  [rojo, verde, azul, alpha] , pero con los valores normalizados, es decir que sólo van de 0.0f a 1.0f).
 

float alphaStart = 0.0;
float alphaEnd = 1.0;
float duration = 1.0;
Renderer rend;
function Start()
{
rend = GetComponent<Renderer> ();
}
function Update()
{
float lerp = Mathf.PingPong(Time.time,duration)/duration;
renderer.material.color.a = Mathf.Lerp(alphaStart,alphaEnd,lerp);
}

 


 

Puede ser también modificando la propiedad del color del componente SpriteRenderer (especificamente el alpha):
 
https://docs.unity3d.com/ScriptReference/SpriteRenderer.html
 
 

Cita de: lightbug date=1555847424Puede ser también modificando la propiedad del color del componente SpriteRenderer (especificamente el alpha):
   
   
      https://docs.unity3d.com/ScriptReference/SpriteRenderer.html
   
   
       
   


 
 
Cita de: Antonio date=1555843637Hola Mcloud.
   
   
       
   
   
      Es posible cambiar la opacidad, pero es algo que también depende un poco de qué shader está usando ese árbol.


      Por ejemplo, entre los shaders "Standard" de unity, hay 4 opciones.
   
   


  •          Sólido, el árbol no tendría opacidad (tampoco por los bordes, sería como una pegatina cuadrada). Los cambios en la transparencia no tendrían efecto alguno.
          

  •       

  •          Cutout, me parece que es el que está usando ese árbol, esta es la transparencia binaria, de "ó es opaco, o es inivisble", pero no hay degradado ni suavizado en los bordes, si vas cambiando la transparencia, seguramente el objeto pasará de ser visible a totalmente invisible en algún punto (depende de la textura). 
          

  •       

  •          Fade es más la transparencia tradicional, creo que es la que buscas, efectivamente cambiar el valor alpha, irá mezclando la textura del árbol con lo que haya detrás (sería como la sombra del árbol). 
          

  •       

  •          La última es Transparent que es muy similar a Fade pero "recuerda" la textura al completo para que otros efectos se sigan aplicando incluso en las zonas con transparencia, como los reflejos en un cristal.
          

  •    

       
   
   
      En todos ellos, se podría cambiar la transparencia en el "material", (cogido a través del componente renderer), aunque cambiar la transparencia no tiene el mismo efecto en cada shader.
   
   
      https://docs.unity3d.com/ScriptReference/Material-color.html  ("color" es un vector4 que hace referencia al color del pixel  [rojo, verde, azul, alpha] , pero con los valores normalizados, es decir que sólo van de 0.0f a 1.0f).
   
   

float alphaStart = 0.0;
float alphaEnd = 1.0;
float duration = 1.0;
Renderer rend;
function Start()
{
rend = GetComponent<Renderer> ();
}
function Update()
{
float lerp = Mathf.PingPong(Time.time,duration)/duration;
renderer.material.color.a = Mathf.Lerp(alphaStart,alphaEnd,lerp);
}

   
      

       
   


Buenas, 
 
Muchísimas gracias, y disculpadme porque llevo una semana infernal en la oficina y no he podido tocar nada aun del juego, pero sera lo primero que modifique y os comento

Etiquetas: