unity 模拟水下场景 水下冒泡
參考博文https://blog.csdn.net/u010989951/article/details/52768794
unity版本5.4(項目源碼百度云
鏈接:https://pan.baidu.com/s/1vsh0S21V1GQNBwtzIfnUoQ
提取碼:agat )
最終效果截圖
首先,新建項目,導(dǎo)入Characters和Environment資源包,搭建地形場景(設(shè)置寬度高度為100,并把地形抬高50),用工具布置場景。(地形布置這里不細講)
布置水面,在導(dǎo)入的Environment資源包里,將Water4Advanced拖入場景中,調(diào)整位置和大小
運行項目,此時水下是沒有水底效果的,接下來做水底特效
做一個觸發(fā)器,檢測相機是否進入水中。新建一個Cube,命名為IsTriggerCube 放大,cube比水下容量大一些就可以,Box Colleder 下勾選 Is Trigger(這里不勾選相機穿不過去),不勾選Mesh Renderer(取消渲染,就是不在場景中顯示)。
導(dǎo)入Effects,里面有Blur腳本,下面要用到
刪除原來的Main Camera
Blur(模糊視角)里面的Iterations和Blur Spread屬性可自行調(diào)整。我是直接寫在腳本里面了。
新建腳本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;//關(guān)閉 Fogcm.GetComponent<Blur>().enabled = false;//關(guān)閉Blur組件}//當相機進入水中時開啟Fog和Blur組件void OnTriggerStay(Collider col){if (col.gameObject == checkObject){//開啟相機上的Blur腳本,設(shè)置屬性值(可以在可視化面板中設(shè)置屬性值,這樣在代碼里就只用控制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;}} //離開水下時,關(guān)閉Blur和Fogvoid OnTriggerExit(Collider col){if (col.gameObject == checkObject){cm.GetComponent<Blur>().enabled = false;RenderSettings.fog = false;}}}在hierarchy中點擊IsTriggerCube(之前創(chuàng)建的大Cube),添加underWater腳本
運行項目,可以看到水下場景
接下來添加氣泡,去Asset Store搜索bubble,找免費的-_-。我選的是第一個
導(dǎo)入后得到
在Hierarchy面板中右擊添加Particle System,設(shè)置屬性如圖。
再次,運行項目
(水下模糊)參考:https://blog.csdn.net/u010989951/article/details/52768794
總結(jié)
以上是生活随笔為你收集整理的unity 模拟水下场景 水下冒泡的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何优雅地管理微信数据库?
- 下一篇: PowerDesigner一键导出数据库