我想模拟充满了“水”的立方体。我想要实现使用纹理或图像,没有粒子动画什么的一个非常基本的解决方案。为了更清楚,如果多维数据集充满40%,我想看到40%的颜色和60%白游戏对象。不幸的是我是一个团结的新手太..有人可以给我一些提示或点我有种教程,可以帮助我吗?
感谢您的时间和答案
一种选择是使用切口着色器。下面是一个例子:
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。
下面是最终的结果: