Unity - симулируйте% заполненный куб с текстурой - PullRequest
0 голосов
/ 04 февраля 2019

Я хочу смоделировать куб, заполненный «водой».Я хочу реализовать очень простое решение, используя текстуру или изображение, без анимации частиц или чего-то еще.Чтобы быть более понятным, если куб заполнен на 40%, я хотел бы видеть игровой объект с 40% цвета и 60% белого.К сожалению, я тоже новичок в Unity .. Может кто-нибудь дать мне несколько советов или указать мне учебник, который может мне помочь?

Спасибо за ваше время и ответы

1 Ответ

0 голосов
/ 04 февраля 2019

Один из вариантов - использовать вырезанный шейдер.Ниже приведен пример:

Shader "Fade/Diffuse"
 {
     Properties
     {
         _Color ("Main Color", Color) = (1,1,1,1)
         _MainTex ("Base (RGB) Trans (A)", 2D) = "white" {}
         _FadeMap ("Fade Map", 2D) = "white" {}
         _Cutoff ("Alpha cutoff", Range(0,1)) = 0.5
     }

     SubShader
     {
         Tags {"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Opaque"}
         LOD 300
         Cull Off
         CGPROGRAM
         #pragma surface surf Standard

         sampler2D _MainTex;
         sampler2D _FadeMap;
         float _Cutoff;
         fixed4 _Color;

         struct Input
         {
             float2 uv_MainTex;
         };

         void surf (Input IN, inout SurfaceOutputStandard o)
         {
             fixed4 diffuse = tex2D(_MainTex, IN.uv_MainTex) * _Color;
             fixed4 fadeSample = tex2D(_FadeMap, IN.uv_MainTex);

             bool cut = (fadeSample.r + fadeSample.g + fadeSample.b)/3.0 < _Cutoff ? false : true;
             o.Albedo = cut ? diffuse.rgb : float3(1,1,1);


         }
         ENDCG
     }

     FallBack "Transparent/Cutout/Diffuse"
 }

Этот шейдер принимает 2 текстуры:

  • Цвет
  • Текстура в оттенках серого, где черный = вырез

Одна важная вещь в этом решении - ультрафиолетовое картирование вашего куба.Если вы используете стандартный встроенный куб, вы заметите, что «уровень воды» также оживляет верх и низ кубов, а также в неправильном направлении на некоторых сторонах.Вам нужно будет создать свой собственный куб с UV, который отображает верх куба на черную часть вашей карты исчезновения.

Вот конечный результат:

Here is the final result

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...