Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Shaders en Unity 4.6

Iniciado por Ítizhor, 26 de Febrero de 2016, 12:14:14 AM

« anterior - próximo »

Ítizhor

Hola:

Veréis, llevo ya varios días tratando de solucionar un problemilla con un shader pero no consigo averiguar cómo resolverlo. Además, como dificultad añadida tengo que por motivos de compatibilidad utilizo Unity en su versión 4.6, por lo que la documentación oficial, ya actualizada, no me sirve.

El caso es que quiero que, al finalizar el nivel de juego, la pantalla se cubra con un shader rojo oscuro y semitransparentado, sobre el que aparecen la puntuación obtenida y las opciones de volver a jugar o salir. El problema es que el shader se renderiza mucho más oscuro de lo normal (de como lo veo en Scene). Siguiendo un tutorial de YouTube, y a cuyo autor supongo que no le afectaba este "fallo" puesto que su shader era negro, elegí el tipo Transparent/Diffuse. He estado probando otros varios, entre ellos algunos pocos con los que pude dar en Unity Answers pero nada.

¿Alguien tiene alguna sugerencia? Lo cierto es que ya empiezo a desesperar, no sé dónde encontrar documentación y me parece un fallo muy, muy tonto pero que me fastidia bastante la presentación  :-[. Y si he venido a Stratos es precisamente por eso: vengo aquí cuando todo lo demás falla. Nunca me he ido del foro sin una solución sencilla y, sobre todo, rápida. Así que vuelvo implorando el consejo de los sabios que habitan tras estas pantallas. ¡Ayuda!

Gracias de antemano,
Ítizhor.

XÑA

¿Qué es un shader rojo oscuro y semitransparente? ¿No te basta con pintar un rectángulo rojo con Alpha en onGUI?

GUI.Color = new Color(1.0f, 1.0f, 1.0f, 0.5f) //0.5 is half opacity

GUI.Box()

GUI.Color = Color.white;

astrologo

#2
Si pones el alpha al 50 % del color será el color semitransparente... Luego puedes programar tu propio shader como te sea más conveniente. Pero todo depende de lo que busques conseguir. Por cierto, desde la versión 4.6 de Unity es un poco sin sentido usar el viejo sistema OnGUI del que veo que refiere XNA; mucho más eficiente y potente el nuevo sistema de UI que incorpora Unity desde la referida versión


En tu caso, si utilizas el material Difusse puedes ajustar su alpha desde el propio editor en el recuadro de color, para hacer algo semitransparente podrías modificar directamente el canal alpha en el editor de Unity y ajustarlo a lo que necesites. También y mejor con el material standard de unity (aunque mucho más costoso de procesar).

También por código, con algo así:

Citar
public class Transparent : MonoBehaviour
{
     public float transparentLevel = 0.5f; //o el valor de transparencia que quieras, entre 0 y 1
     void Start(){
        gameObject.renderer.material.color=
               new Color(1.0f,1.0f.1.0f, transparentLevel);
     }
}


Tocando el transparent level podrías tener lo que buscas.


un saludo
GAME DESIGNER
Twitter: @astrologo666, @Kikkulia






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.