我看到网上大部分帖子都是通过景深(depth of field)实现,但是我自己在用的过程中发现并不好用,虽然能实现水下模糊,但是模糊的太假,不像是在水下,我这里采用的是浅蓝色的雾加blur实现,先上效果图:

水面图

水下图
实现方法如下:
第一步:
为了实现相机判断是不是处于水面下,我这里采用一个cube来填充整个水下空间,这样利于判断是不是处于水面下,在hierarchy面板下点击gameobject,创建一个cube,修改名字和tag为shuixia,调整cube的大小,使cube填充到整个水面以下空间。勾选cube的box collider组件下的is Trigger,否则相机无法穿入cube。
第二步:
给camera添加blur组件,该组件在image effects目录下,如果你的unity下没有image effects,那么不用担心,那是因为你没有导入标准资源,在project下导入标准资源即可。将blur的iterations 参数设置为1,blur spread 参数设置为0.3,你也可以设置其他值去调试效果。
第三步:
设置开启浓雾效果,老版本的unity在edit的render setting下,新版本的fog在window/lighting中。勾选fog即能打开浓雾效果,设置浓雾的颜色可以实现模拟水下效果。当然,这里的浓雾和blur默认是所有场景,我们可以通过代码控制fog和blur效果的显示和关闭。
第四步:
具体脚本的编写,我这里的思路是当摄像机与水面下的cube碰撞,就开启fog和blur下过,当相机离开cube就关闭fog和blur效果,当然,初始化时要关闭fog和blur,除非初始时你的相机就在水下。
具体的脚本如下:

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System;
using UnityEngine.EventSystems;
using UnityStandardAssets.ImageEffects;
public class shijiao : MonoBehaviour
{public GameObject Cm;//获取摄像机public GameObject shuixia;//获取水下的cubevoid Start (){RenderSettings.fog = false;//初始化关闭fogCm = GameObject.Find("Mcam");Cm.GetComponent<Blur>().enabled = false;}void OnTriggerStay(Collider hit){if (hit.gameObject == shuixia){Cm.GetComponent<Blur>().enabled = true;RenderSettings.fog = true;RenderSettings.fogColor=new Color(0, 0.4f, 0.7f, 0.6f);RenderSettings.fogDensity = 0.04f;}}void OnTriggerExit(Collider hit){if (hit.gameObject == shuixia){Cm.GetComponent<Blur>().enabled = false;RenderSettings.fog = false;}}
}

unity水下模糊效果相关推荐

  1. Unity 屏幕模糊效果

    Unity 屏幕模糊效果 前几天,美术要我做一个屏幕模糊的效果,百度了半天,最后总算解决了. 趁着有时间,现在来总结一下. 首先我这边是为了出效果,所以原理先放一边,来谈谈如何实现.什么高斯模糊,均值 ...

  2. unity 手机 模糊效果_GUI背景模糊效果优化

    欢迎关注"数天技术"!" 作者介绍:数字天空项目组客户端工程师 – 文立" 导语 在游戏界面显示时,通常会对背景进行模糊,使显示界面更加清楚.此外,在处理景深( ...

  3. 【Unity】实现镜头虚化模糊效果(Blur):camera模糊,UGUI模糊,FairyGUI模糊效果

    前言 起因是在一个FairyGUI项目里,有个项目需求要求弹出框的背景是虚化模糊效果,包括背景后的UI模糊和场景模糊,于是有了这一次unity实现模糊效果的测试记录. 先贴一下测试使用的unity工程 ...

  4. 迎接互联网的明天--玩转3D Web

    迎接互联网的明天--玩转3D Web基本信息 作者: 邹静 出版社:电子工业出版社 ISBN:9787121133084 上架时间:2011-6-9 出版日期:2011 年6月 http://prod ...

  5. Unity3D ——强大的跨平台3D游戏开发工具教程

    http://unity3d.9ria.com/?p=22 众所周知,Unity3D是一个能够实现轻松创作的多平台的游戏开发工具,是一个全面整合的专业游戏引擎.在现有的版本中,其强大的游戏制作功能已经 ...

  6. Unity3D开发:为地形添加水源和效果

    第一步:添加水面 由于我在上一次的地形创作中就已经在山峰之间制作了一块洼地,它就可以作为一个放置湖水的地方.如果您上次的创作并没有这样的地形,那么请您重新创建一个山势地形图,就当作自己的一次练习吧. ...

  7. unity 模拟水下场景 水下冒泡

    参考博文https://blog.csdn.net/u010989951/article/details/52768794 unity版本5.4(项目源码百度云 链接:https://pan.baid ...

  8. Unity URP运动模糊效果Shader

    实现原理 见这篇文章Unity Shader-深度相关知识总结与效果实现(LinearDepth,Reverse Z,世界坐标重建,软粒子,高度雾,运动模糊,扫描线效果)_puppet_master的 ...

  9. 【游戏开发实战】Unity ShaderGraph实现图片的高斯模糊效果

    文章目录 一.前言 二.最终效果 三.高斯模糊的原理 四.ShaderGraph的高斯模糊实现 一.前言 之前我写了一篇文章:ShaderGraph使用教程与各种特效案例:Unity2020 有网友私 ...

最新文章

  1. AttributeError: ‘Tensor‘ object has no attribute ‘encoder‘
  2. 关于Quartz的Job 不能被注入以及SpringAop对Job失效
  3. Windows打印体系结构之打印驱动框架
  4. 02html和css
  5. php320,PHP_PHP正式版-320mp3下载站
  6. java多线程系列13 设计模式 Future 模式
  7. mysql 用户授权
  8. 互联生活:业务模式聚焦
  9. WORD如何比较原文档和别人修改过的文档?
  10. Umbrella Network与Linear Finance合作,将专业金融数据带入DeFi
  11. 据说学编程的计算这题不超1分钟!
  12. PowerShell批量配置VM端点
  13. mysql视图的更新 条件_MySQL进阶16 - 视图的创建/修改/删除/更新--可更新性的不适用条件...
  14. 计算机12点自动关机,电脑怎么设置定时自动关机命令 电脑设置定时关机方法【图文】...
  15. 需求分析说明书和需求规格说明书
  16. 痛并快乐着的研究生学习生涯(4)-9.4
  17. banner图片不拉伸、全屏宽、居中显示的方法
  18. 老婆问我什么是同步、异步、阻塞、非阻塞!
  19. P28 Elastic Beanstalk
  20. 自然语言处理nlp小姜机器人(闲聊) nlp_xiaojiang-996station GitHub鉴赏官

热门文章

  1. 国外android 邮件工具,对比测评国内外四个邮箱APP 邮箱大师表现最全能
  2. 智能驾驶汽车之自动泊车发展阶段
  3. 多用户MIMO在移动通信系统中的应用
  4. python能开发小程序吗_微信小程序用什么语言开发?Python能开发小程序么
  5. php判断运营商,php识别手机号码运营商简单示例
  6. 网站内容快速填充的技巧和方法
  7. 伪装成抖音国际版Tiktok的短信蠕虫(病毒分析)
  8. Linux错误:warning: here-document at line 5 delimited by end-of-file (wanted `EOF`
  9. Jdt-compiler是什么?有什么作用
  10. 计算机组成原理课设题目详解