欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

unity 模拟水下场景 水下冒泡

发布时间:2024/1/8 61 豆豆
生活随笔 收集整理的这篇文章主要介绍了 unity 模拟水下场景 水下冒泡 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

参考博文https://blog.csdn.net/u010989951/article/details/52768794

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;//关闭 Fogcm.GetComponent<Blur>().enabled = false;//关闭Blur组件}//当相机进入水中时开启Fog和Blur组件void OnTriggerStay(Collider col){if (col.gameObject == checkObject){//开启相机上的Blur脚本,设置属性值(可以在可视化面板中设置属性值,这样在代码里就只用控制enable)cm.GetComponent<Blur>().enabled = true;cm.GetComponent<Blur>().iterations = 0;cm.GetComponent<Blur>().blurSpread = blurspread;//开启Fog(雾)RenderSettings.fog = true;RenderSettings.fogColor = new Color(0, 0.4f, 0.7f, 0.6f);//颜色浅蓝RenderSettings.fogDensity = 0.04f;}} //离开水下时,关闭Blur和Fogvoid 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,设置属性如图。

再次,运行项目

(水下模糊)参考:https://blog.csdn.net/u010989951/article/details/52768794

总结

以上是生活随笔为你收集整理的unity 模拟水下场景 水下冒泡的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。