Noticias

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

[Ayuda] Convertir Material Opaco en Transparente

Iniciado por Centauro5legs, Octubre 04, 2017, 10:53:08 PM

Tema anterior - Siguiente tema
Como lo dice el Titulo, como podría mediante un script, cambiar el tipo de material de "Opaco" a "Transparente". Es decir, permitir que se transparente.

Octubre 04, 2017, 11:20:14 PM #1 Ultima modificación: Octubre 04, 2017, 11:21:18 PM por enelmenu
Deberias obtener el Componente Renderer del objeto y almacenarlo en una variable, y apartir de ahi retocar el Renderer.material.
 
Algo asi:

Inserta el script en el objeto a provocar la transparencia
 

   public class Example : MonoBehaviour
    {
        public Renderer _renderer;
     
         void Awake()
        {
            _renderer = GetComponent<Renderer>();
        }
     
         void Update()
        {
           if (Input.GetKeyDown(KeyCode.E))
              {
                _renderer.material.color = new Color(1, 1, 1, Cero); //unityspain.com no toma el numero 0 asi solo, nose por que.
              }
         
           if (Input.GetKeyDown(KeyCode.R))
            {
                 _renderer.material.color = new Color(1, 1, 1, 1);
            }
        }
    }

 
Y apartir de aca espero que allas entendido el concepto, podes hacer un lerp al Color.a para darle un efecto suave
 
Me parece que hubo un malentendido en mi respuesta, te respondi como retocar un color de un material pero no como retocar su tipo de renderizado:
 
Iguamente lo que escribi arriba te sirve

Aca esta tu solucion
 
https://docs.unity3d.com/ScriptReference/Material-shader.html

Depende que sea transparente, en Unity un "transparent" es un material tipo vidrio, que tiene algo pero que deja pasar luz, despues tenes los alpha cuttof o fade que es un material que directamente borra todo color en determinadas partes (canal alpha) , una hoja de un arbol por ejemplo. No se que es lo que queres porque podes tener un Dissolve que hace algo asi:
 


   
eature=oembed" width="480">

 
por eso si aclaras un poco mas quizas se puede llegar a lo que queres. Si no es nada de esto y es tocar el alpha directamente lo que dice @enelmenu te deberia funcionar.
 
 

tambien puedes crear dos materiales, uno diffuse (o lo que sea) y otro transparent(diffuse, cutout o lo que quieras) y luego cambiarlos via script: (en el ejemplo se cambia con las teclas "1" y "2")
 

using...
public class materialSwitcher... {
   public Material mat1;
   public Material mat2;
   void Update() {
      if (Input.GetKeyDown(KeyCode.Alpha1)) {
         renderer.material = mat1;
      }
      if (Input.GetKeyDown(KeyCode.Alpha2)) {
         renderer.material = mat2;
      }
   }
}

 
 

Etiquetas: