纳金网
标题:
Unity3d水下模糊效果
[打印本页]
作者:
晃晃
时间:
2011-9-2 07:59
标题:
Unity3d水下模糊效果
这个教程大部分使用的是U3D内置的资源,使用到的水下模糊效果也仅仅是添加了Depth Of Field特效,用于模拟水下效果,下面有两种触发方式的讲解.
一、判断摄像机在绝对世界的水平位置.
首先先看看效果
后面正式开始制作
1. 新建一个地型,挖一个这样的洞
2. 在资源包里添加一个水面,调整到合适的大小及位置。
3. 对主摄像机添加Depth Of Field特效
这个时候Game面板应该已经有变化了,Inspector面板里也已经多了个Depth Of Field脚本。点前面的小勾可以打开或关闭脚本。你可以试着编辑Depth Of Field脚本里的参数,可以得出很有趣的效果。更多摄相机效果请看Design3 - Image Effects。
4. 编写脚本判断摄像机是否在水下
JavaScript的代码:
var Camara_1 : GameObject;
function Start(){
Camara_1 = GameObject.Find("/First Person Controller/Main Camera");
}
function Update () {
if(transform.position.y < 9.5)
Camara_1.GetComponent("DepthOfField").enabled = ***e;
if(transform.position.y > 9.5)
Camara_1.GetComponent("DepthOfField").enabled = false;
}
C Sharp Script的代码:
using UnityEngine;
using System.Collections;
public class shuixia_1 : MonoBehaviour {
public GameObject Camara_1;
void Start () {
Camara_1 = GameObject.Find("/First Person Controller/Main Camera");
}
void Update () {
if(transform.position.y < 9.5)
Camara_1.GetComponent<DepthOfField>().enabled = ***e;
if(transform.position.y > 9.5)
Camara_1.GetComponent<DepthOfField>().enabled = false;
}
}
想了想还是不截图了,直接上代码,IF后面的9.5是水平面的高度,那个数值可以设定触发相机模糊的高度。因为代码少,就不走注解了,如果有什么不明白的可以Q我。
二、设置水区域,判断相机是否在区域内
1.接上个小节,这个时候在原地型的基础上再绘制一座更高的山,山中间有个洞,洞里面再添加一个水面
2.把上节中shuixia_1的脚本关闭,
3.给两个水区域添加BOX,要刚好把水面和水下的区域覆盖掉,这时候要多运用各个视图,这里不详细讲,有问题可以Q我。
4.给新建的两个BOX添加Collider,并勾选Is Trigger,新建一个标签为shuixia,两个BOX选择标签为shuixia,之后将BOX设为不渲染
5.编写程序脚本,判断相机是否在BOX区域内
JavaScript的代码:
var Camara_1 : GameObject;
function Start(){
Camara_1 = GameObject.Find("/First Person Controller/Main Camera");
}
function OnTriggerStay(hit : Collider){
if(hit.gameObject.tag=="shuixia")
Camara_1.GetComponent("BlurEffect").enabled = ***e;
}
function OnTriggerExit(hit : Collider){
if(hit.gameObject.tag=="shuixia")
Camara_1.GetComponent("BlurEffect").enabled = false;
}
C Sharp Script的代码:
using UnityEngine;
using System.Collections;
public class shuixia_2 : MonoBehaviour {
public GameObject Camara_1;
void Start () {
Camara_1 = GameObject.Find("/First Person Controller/Main Camera");
}
void OnTriggerStay(Collider hit) {
if(hit.gameObject.tag=="shuixia")
Camara_1.GetComponent<BlurEffect>().enabled = ***e;
}
void OnTriggerExit(Collider hit) {
if(hit.gameObject.tag=="shuixia")
Camara_1.GetComponent<BlurEffect>().enabled = false;
}
}
转自:http://www.u3dpro.com/read.php?tid=639
作者:
奇
时间:
2012-3-12 23:31
很经典,很实用,学习了!
作者:
呼啦呼啦
时间:
2014-1-19 19:00
必须要学习一下
作者:
gibson0916
时间:
2014-2-19 23:25
謝謝芬想阿~~大哥~~
作者:
riceton911
时间:
2014-2-20 12:12
感謝教學分享
作者:
52530740
时间:
2014-6-30 14:30
还不错啊
作者:
icerein
时间:
2014-7-1 14:32
还不错啊
作者:
52530740
时间:
2014-7-9 10:40
感觉还好吧。。
作者:
saviosun
时间:
2014-7-9 13:37
很有趣的教程,感谢
作者:
hxsdsjr
时间:
2014-7-10 06:32
好东东大家就要支持
作者:
青缕
时间:
2014-7-16 21:46
非常感谢
作者:
dckill
时间:
2016-1-7 15:01
好东东大家就要支持
欢迎光临 纳金网 (http://go.narkii.com/club/)
Powered by Discuz! X2.5