团结 - 模拟一个充满%与立方体纹理

问题描述 投票:-1回答:1

我想模拟充满了“水”的立方体。我想要实现使用纹理或图像,没有粒子动画什么的一个非常基本的解决方案。为了更清楚,如果多维数据集充满40%,我想看到40%的颜色和60%白游戏对象。不幸的是我是一个团结的新手太..有人可以给我一些提示或点我有种教程,可以帮助我吗?

感谢您的时间和答案

unity3d textures
1个回答
1
投票

一种选择是使用切口着色器。下面是一个例子:

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"
 }

这个shader需要2个纹理:

  • 颜色
  • 灰度纹理其中黑色=切口

关于这个解决方案的一个重要的事情是你的立方体的UV贴图。如果使用内置立方体的标准,你会发现“水位”也对动画立方体的顶部和底部,并在一些边的方向错了。你必须使自己的立方体,该立方体的顶部映射到您的褪色地图的黑色部分的UV。

下面是最终的结果:

Here is the final result

© www.soinside.com 2019 - 2024. All rights reserved.