首先创建两个摄像机,两个摄像机的所有值都一样,把一个拖成子物体。接着 ,在地形的下方创建一个跟地形差不多长、宽的plane,给他一个材质球,材质球设为黑色。
接着,创建一个WarFog层,将子摄像机的渲染层Culling Mask设置成只渲染WarFog层。将Plane设置成WarFog层。
在角色底下创建一个白色面板,设置为WarFog层。创建一个Render Texture ,将它拖到子摄像机的Target Texture属性上。
将主摄像机的Culling Mask去除WarFog层,加上如下脚本。
<pre name="code" class="csharp">using UnityEngine;
using System.Collections;
public class Warfog : MonoBehaviour {
[SerializeField]
//拖到子摄像机上的Render Texture
private RenderTexture mask;
[SerializeField]
//创建的材质球 需要用到WarFog sharder 在下面给出
private Material mat;
//在图像渲染之后执行
public void OnRenderImage(RenderTexture source,RenderTexture des)
{
//将遮罩的mask传入材质球
mat.SetTexture("_MaskTex",mask);
//经过材质球的sharder变换后 拷贝源纹理到目的渲染纹理。
Graphics.Blit(source,des,mat);
}
}
创建材质球MaskMat将sharder换成如下