在Unity3D中,你可以使用Shader來實(shí)現(xiàn)視差滾動效果。以下是一個簡單的示例,展示了如何使用Unity Shader實(shí)現(xiàn)視差效果:
Shader "Custom/ParallaxShader" {
Properties {
_MainTex ("Texture", 2D) = "white" {}
_Color ("Color", Color) = (1,1,1,1) {}
}
SubShader {
Tags {"Queue"="Transparent" "RenderType"="Transparent"}
LOD 100
CGPROGRAM
#pragma surface surf Lambert vertex:vert
sampler2D _MainTex;
float4 _Color;
struct Input {
float2 uv_MainTex;
};
void vert (inout appdata_full v) {
float4 worldpos = mul(unity_ObjectToWorld, v.vertex);
float3 worldNormal = UnityObjectToWorldNormal(v.normal);
float3 worldViewDir = UnityObjectToWorldDir(v.viewDir);
v.worldpos = worldpos;
}
void surf (Input IN, inout SurfaceOutput o) {
float2 uv = IN.uv_MainTex;
float depth = 1 - uv.y;
float2 parallax = depth * 2 - 1;
o.Albedo = tex2D(_MainTex, uv).rgb * _Color.rgb;
o.Alpha = _Color.a;
}
ENDCG
}
FallBack "Diffuse"
}
現(xiàn)在,當(dāng)您運(yùn)行場景時,您應(yīng)該能夠看到ParallaxShader在所選對象上產(chǎn)生的視差滾動效果。您可以根據(jù)需要調(diào)整Shader代碼中的參數(shù),以獲得所需的效果。