版权声明:原创图片,自截图片,纯手打文字,经过允许才可转载!业余个人经验分享,有不足的地方请留言,或点【投票】以资鼓励;觉得帮了小忙,请点个赞;还可以点击分享;怕下次出问题之后忘记找不到,可点击收藏。谢谢合作。 https://blog.csdn.net/qq_40985921/article/details/86299566
unity版本5.4(项目源码百度云
链接:https://pan.baidu.com/s/1vsh0S21V1GQNBwtzIfnUoQ
提取码:agat )
最终效果截图
首先,新建项目,导入Characters和Environment资源包,搭建地形场景(设置宽度高度为100,并把地形抬高50),用工具布置场景。(地形布置这里不细讲)
布置水面,在导入的Environment资源包里,将Water4Advanced拖入场景中,调整位置和大小
运行项目,此时水下是没有水底效果的,接下来做水底特效
做一个触发器,检测相机是否进入水中。新建一个Cube,命名为IsTriggerCube 放大,cube比水下容量大一些就可以,Box Colleder 下勾选 Is Trigger(这里不勾选相机穿不过去),不勾选Mesh Renderer(取消渲染,就是不在场景中显示)。
导入Effects,里面有Blur脚本,下面要用到
删除原来的Main Camera
Blur(模糊视角)里面的Iterations和Blur Spread属性可自行调整。我是直接写在脚本里面了。
新建脚本underWater.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityStandardAssets.ImageEffects;
public class underWater : MonoBehaviour
{
public GameObject cm;
public GameObject checkObject;//角色
private float blurspread = 0.3f;
void Start()
{
RenderSettings.fog = false;//关闭 雾
cm.GetComponent<Blur>().enabled = false;
}
void OnTriggerStay(Collider col)
{
if (col.gameObject == checkObject)
{
cm.GetComponent<Blur>().enabled = true;
cm.GetComponent<Blur>().iterations = 0;
cm.GetComponent<Blur>().blurSpread = blurspread;
RenderSettings.fog = true;
RenderSettings.fogColor = new Color(0, 0.4f, 0.7f, 0.6f);
RenderSettings.fogDensity = 0.04f;
}
}
void OnTriggerExit(Collider col)
{
if (col.gameObject == checkObject)
{
cm.GetComponent<Blur>().enabled = false;
RenderSettings.fog = false;
}
}
}
在hierarchy中点击IsTriggerCube(之前创建的大Cube),添加underWater脚本
运行项目,可以看到水下场景
接下来添加气泡,去Asset Store搜索bubble,找免费的-_-。我选的是第一个
导入后得到
在Hierarchy面板中右击添加Particle System,设置属性如图。
再次,运行项目