http://www.manew.com/thread-50263-1-1.html?_dsign=69187639
uestion from caedmom:
像英雄联盟的战争迷雾有哪些方法可以实现,哪个方法的效果最优呢?网上找的方法和视频上指导的方法的迷雾边缘都很明显啊,还请王总指教哈~
Answer from Mr Wang:
1.可以使用Tasharen Fog of War来实现
2.使用Projecter来实现(Projecter的正交投影空间是方形的,对于一些在XZ平面是比较狭长的场景,Projecter的正交投影空间包裹得就不是很严密,这就会造成FogOfWarRTT大量的像素浪费,也就是说FogOfWarRTT有相当大的一部分像素是没有用的,所以要自己实现正交投影矩阵)
接下来下载使用Tasharen Fog of War1.0插件,做了个小demo,写帖子时参考了这篇文档,感谢!
1.导入插件
2.然后我们把插件自带的Fog of War预设拖入场景,接着创建一个地形,和两个Cube,一个是CubeRedEnemy(以下简称Enemy)为红色,一个是CubeGreenHero(以下简称Hero)为绿色(颜色不重要),我们Hero移动来观Enemy的显现,接着让MainCamera俯Hero。
![](http://img.manew.com/data/attachment/forum/201604/15/203431v55w77wzossww9vb.png.thumb.jpg)
关于移动脚本大家可以自己编写简单的,也可以参考下我这个比较繁琐的脚本,大家使用时一定要记得给地形Terrain、CubeGreenHero、CubeRedEnemy分别打标签为Ground、Player、Enemy,否则你点不动哦~嗯。。其实是从
四月训练营(点击跳转)
demo直接拖过来用的,大家如果想参考可以回复支持一下。
3.添加插件中的脚本:
MainCamera:添加 FowEffect.cs – 使得摄像机得到渲染
Hero:添加 FOWRevealer.cs –控制主角可见范围
Enemy:添加 FOW Renderers.cs –控制阴影中是否可见
Hero:添加 FOWRevealer.cs –控制主角可见范围
Enemy:添加 FOW Renderers.cs –控制阴影中是否可见
然后,将Hero下挂在的FOWRevealer脚本属性中Line Of Sight Check改为Every Update()
![](http://img.manew.com/data/attachment/forum/201604/15/205306a11pglsjjor0gxzp.png.thumb.jpg)
4.运行,然后再Inspector面板移动方块,你会发现已经有战争迷雾效果了,并且靠近Enemy时,Enemy会显现,远离时Enemy会消失在迷雾中 .(unity5.0中有Bug,可以尝试在Edit的Project Setting的player中把DX11取消勾选)
![](http://img.manew.com/data/attachment/forum/201604/15/203122mcne8inji6cc8if4.gif)