Jump to content
UnitySpain
Sign in to follow this  
AngelM

Elemento invisible PERO que no se vea lo que este atras

Recommended Posts

Muy buenas,, saludos a la comunidad, tengo un inconveniente que de verdad no se como darle la vuelta,, explico la situacion;

el escenario es un cuarto grande con un laberinto que no es muy largo para no aburrir.

son jugadores

aqui viene el detalle atencion;

las paredes deben ser "invicibles" en sentido no tendran color solo el colider 

PEEROOOOOO.......

si un jugador esta detras de una pared no podra ver al jugador contrario,, es decir los jugadores solo se podran ver si estan en el mismo pasillo.

Algoparecido al depth mask de la camara pero no he conseguido ejemplos claros o tutoriales.

O si hay otra forma de hacerlo no he visto en casos parecidos

Esperando cualquier ayuda y/o sugerencia

Gracias miles

 

Share this post


Link to post
Share on other sites

Hola, si ese es el efecto que estoy buscando pero no consigo ejemplos claros o mejor explicados para hacer las pruebas.

Share this post


Link to post
Share on other sites

Hola, si esa es la idea,, ya vi el post y voy a hacer unas pruebas aunque de verdad no entendi mucho,, digo no hay tutoriales en cuanto este tema como los hay por ejemplo de otras funciones tipo vector3, raycast, etc.

Ok hice un par de pruebas,,, y tuve una par de dolores de cabeza,,, podria decir que esta a medio camino ,,, en funcion de un si y no,,,, hice unas capturas de pantalla y las explico asi comparto los resultados con la comunidad y espero que solvente tambien el mismo detalle que tenga otra persona,,,, explico;

En la escena hay 3 elementos (3 Cubos), al primer cubo le coloque el shader y con el script del post que me sugeristes y un material nuevo, (circulo 1)

Lo cual resulto que el material quedara de color negro o "vacio" pero aun se veian los objetos detras de este (circulo 2).

Me use a hacer un par de pruebas con resultados de dolores de cabeza y consegui que... si cambio una opcion (que aparece en la parte inferior derecha) de:

Render Quene : From Shader   a    Render Quene : Geometry (Circulo 3)

Obtengo el resultado de que no se ven los elementos que estan detras del objeto que esta de primero (circulo 4)..

Entonces aqui viene el resumen, funciono si y no,, en sentido de que si es verdad que ya no se ven los elementos que estan detras,,

pero no porque es como si tuviera un material negro y el objetivo es que este invisible,

Se que falta algun otro detalle,,, y sigo sin conseguir un buen tutorial de depht mask o un shader que involucre el colormask 0 que lo explique de una manera entendible o mas detallado,....

sigo haciendo pruebas cualquier otra opcion o sugerencia la agradezco full

 

1.png

2.png

3.png

Share this post


Link to post
Share on other sites

Buenos dias a la comunidad,,, buscando informaion consegui este video :

en el cual se muestran diversas formas del uso del Queues, en uno de esos ejemplos esta la forma que quiero aplicar a mi proyecto, lamentandolo mucho la persona que realizo este ejemplo no da tutorial o muestra del codigo de como se hizo,, de momento consegui otro codigo que logra cambiar el color del objeto que este detras de la "Pared", como dije anteriormente estoy a mitad, posteo tambien el codigo por si alguien ya tiene experiencia en este tipo de ejemplos me de una mano o me indique donde puedo conseguir informacion mas detallada. 

 Shader "Invisible"
 {
     Properties
     {
         [PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {}
         _Color ("Tint", Color) = (1,1,1,1)
         [MaterialToggle] PixelSnap ("Pixel snap", Float) = 0
     }
 
     SubShader
     {
         Tags
         { 
             "Queue"="Geometry+2" 
             "IgnoreProjector"="True" 
             "RenderType"="Transparent" 
             "PreviewType"="Cube"
             "CanUseSpriteAtlas"="True"
         }
         
         Cull Off
         Lighting Off
         ZWrite Off
 
         CGPROGRAM
         #pragma surface surf Lambert vertex:vert
         #pragma multi_compile DUMMY PIXELSNAP_ON
 
         sampler2D _MainTex;
         fixed4 _Color;
 
         struct Input
         {
             float2 uv_MainTex;
             fixed4 color;
         };
         
         void vert (inout appdata_full v, out Input o)
         {
             #if defined(PIXELSNAP_ON) && !defined(SHADER_API_FLASH)
             v.vertex = UnityPixelSnap (v.vertex);
             #endif
             v.normal = float3(0,0,-1);
             
             UNITY_INITIALIZE_OUTPUT(Input, o);
             o.color = v.color * _Color;
         }
 
         void surf (Input IN, inout SurfaceOutput o)
         {
             fixed4 c = tex2D(_MainTex, IN.uv_MainTex) * IN.color;
             o.Albedo = c.rgb * c.a;
             o.Alpha = c.a;
         }
         ENDCG
     }
 
 Fallback "Transparent/VertexLit"
 }

Gracias miles a todos los aportes y ayudas

 

Edited by BAMF
Usa <> al escribir código.

Share this post


Link to post
Share on other sites
Sign in to follow this  

×
×
  • Create New...