AlayaElla

主要写写游戏制作方面的文章

unity2D解决阴影透明度叠加的问题

前言

添加阴影是中提高画面质感有效的方式。
之前在自己的2D游戏里面添加阴影有时候遇到这样的问题,半透明的阴影重叠起来之后透明度也叠加了。

这并不是我想到要的效果。

我希望的重叠的阴影透明度保持统一。

第一种方法

专门创建一个照场景物体的相机,把照相机的画面渲染到一个render texture中,然后把rendertexture变成黑色边投影作为阴影。
这样的操作过程有点麻烦但是好处是可以对阴影添加各种效果。
因为它就是个图片。

shadowcamera参数:

需要注意的是shadowcamera的位置最好和游戏的主摄像机位置一致,这样方便对齐阴影。

rendertexture参数

rendertexture的size需要和屏幕高宽比一致,这样阴影的比例才是正确的。

Plane参数
在主场景中我使用了Plane做为阴影的图片显示,并且做了一个简单shader来调整阴影的颜色和透明度。

shader的代码如下:

Shader "Custom/Shadow" 
{
    Properties 
    {       
        _MainTex ("Albedo (RGB)", 2D) = "white" {}
        _Color ("Color", Color) = (1,1,1,1)
    }

    SubShader 
    {
        Tags
        { "Quene" = "Transparent"
            "IgnoreProjector" = "True"
            "RenderType" = "TransparentCutout"
        }
        Pass{
            Tags{ "LightMode" = "ForwardBase" }
            ZWrite Off
            Cull Off
            Blend SrcAlpha OneMinusSrcAlpha
            CGPROGRAM
            #include "UnityCG.cginc"
            #pragma vertex vert_img
            #pragma fragment frag     

            fixed4 _Color;
            sampler2D _MainTex;
            float4 _MainTex_ST;
            fixed _AlphaScale;

            fixed4 frag(v2f_img i) : COLOR
            {
                fixed4 color = tex2D(_MainTex, i.uv);
                _Color.a *= color.a;
                return (_Color);
            }
            ENDCG
        }
    }
}

最终效果如下:

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注