亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Unity3D第一人稱視角游戲者水下視覺效果的實(shí)現(xiàn)

        2012-04-29 00:00:00方凱

        摘要:本文簡單的闡述了使用Unity3D游戲引擎自帶的第一人稱控制器創(chuàng)建的第一人稱游戲者在水面之下行進(jìn)時(shí),如何讓游戲畫面呈現(xiàn)出和其在水面之上時(shí)不同的視覺效果。

        關(guān)鍵詞:Unity3D;游戲引擎;第一人稱視角;水下效果

        中圖分類號:TP39 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9599 (2012) 15-0000-02

        Unity3D是一款由Unity Technologies開發(fā)的一款游戲引擎,是一種便捷易用的交互式圖形化的綜合型游戲開發(fā)工具。它可以很方便的讓非計(jì)算機(jī)專業(yè)的開發(fā)人員創(chuàng)建自己的三維電腦游戲、建筑的可視化游歷、以及實(shí)時(shí)交互的三維動(dòng)畫作品。該游戲引擎支持多種系統(tǒng)平臺,它開發(fā)的作品可以很方便的在PC、MAC等計(jì)算機(jī)平臺上運(yùn)行,也可以在Android和iOS等移動(dòng)設(shè)備平臺上運(yùn)行,還可直接發(fā)布到網(wǎng)頁。該游戲引擎還對常用的三維建模軟件如3DMAX、Maya有著非常好的兼容性,可以很方便的把在上述三維建模軟件當(dāng)中建造好的各種三維模型導(dǎo)入到游戲場景之中。因此,該開發(fā)平臺應(yīng)用非常廣泛,特別是在藝術(shù)設(shè)計(jì)領(lǐng)域,更是受到廣大開發(fā)人員的推崇。

        該引擎在其內(nèi)置的Standard Assets資源包的Prefabs項(xiàng)下,提供了一個(gè)名為Firsr Person Controller(第一人稱控制器)的預(yù)制對象。開發(fā)人員在游戲場景中加入此預(yù)制對象,即可很方便的創(chuàng)建出一個(gè)第一人稱視角的游戲者,然后配合鍵盤上的W、A、S、D按鍵和鼠標(biāo),即可控制游戲者的運(yùn)動(dòng)方向和視角。這樣一來,開發(fā)人員可以幾乎不用寫任何程序代碼,即可實(shí)現(xiàn)一個(gè)三維游戲場景的可視化游歷。

        在該游戲引擎內(nèi)置的Pro Standard Assets資源包的Water項(xiàng)下,還提供了一個(gè)名為DayLight Water的預(yù)制對象,通過在場景中導(dǎo)入該對象,我們可以很方便的在場景中創(chuàng)建出一個(gè)水體系統(tǒng)。其覆蓋面積大小和水面的視覺效果,可以通過在Inspector窗口中指定DayLight Water對象的一系列參數(shù)來指定。建立好水體系統(tǒng)后,我們操縱使用系統(tǒng)內(nèi)置的第一人稱控制器創(chuàng)建的游戲者走到水面之下時(shí),就會發(fā)現(xiàn),游戲玩家無論是在水面之上還是在水面之下,表現(xiàn)出來的視覺效果都是一樣的。為什么是這樣的呢?原來,Unity引擎內(nèi)置的“DayLight Water”對象只是一個(gè)指定了位置、面積和高度的具有水面屬性材質(zhì)的一個(gè)平面。這個(gè)平面之上和平面之下,環(huán)境都是一樣的,因此無論游戲者在水面之上還是水面之下,屏幕上呈現(xiàn)的第一人稱視角游戲畫面的視覺效果都是一樣的。而現(xiàn)實(shí)中,我們在水下的視角看上去的畫面是和在水面之上的視角看上去是有區(qū)別的,一般來說,水下看到的場景會有水本身的顏色,而且看起來會有些模糊。

        那么,我們?nèi)绾尾拍茏層螒蛘咴谒嬷虾驮谒嬷聲r(shí)看到的畫面呈現(xiàn)出不同效果呢?首先,我們來分析一下DayLight Water對象的基本屬性:在Hierarchy窗口中我們選定游戲場景中的DayLight Water對象后,在Inspector窗口可以看到其一系列的屬性,其中在Trasform屬性當(dāng)中有一個(gè)名為Position的項(xiàng),包括X、Y和Z三個(gè)數(shù)值。其中Y值就是指水平面距離游戲場景的地形系統(tǒng)中的基本地平面的高度。在場景的地形之中,只要距離基本地平面的高度小于Y值得低洼地面和放置其上的三維模型,就會淹沒在水面之下,反之高于此數(shù)值的高原、山地和放置其上的三維模型則會露出在水面之上。Unity引擎中的第一人稱控制器對象,是沿著地面運(yùn)動(dòng)的,因此當(dāng)我們運(yùn)行游戲時(shí)用W、A、S、D鍵操縱游戲者走到高度值低于水面的Y值得地面時(shí),游戲者就會沉入水中。

        接下來我們再分析一下Firsr Person Controller(第一人稱控制器)預(yù)制對象。當(dāng)我們在Hierarchy窗口中展開Firsr Person Controller對象后,我們發(fā)現(xiàn)原來Firsr Person Controller是由兩個(gè)子對象構(gòu)成的,其中一個(gè)子對象是一個(gè)豎立的膠囊形物體,名為“Graphics”,而另一個(gè)則是名為“MainCamera”的攝像機(jī)對象。事實(shí)上,我們用W、A、S、D鍵操縱第一人稱游戲者運(yùn)動(dòng)的時(shí)候,事實(shí)上是在操縱“Graphics”對象在運(yùn)動(dòng),而攝像機(jī)“MainCamera”是綁定在“Graphics”物體上并隨之運(yùn)動(dòng)的,我們從畫面上看到的第一人稱場景,就是“MainCamera”攝像機(jī)視角的場景。這樣,我們只需要對Firsr Person Controller的攝像機(jī)子對象“MainCamera”進(jìn)行設(shè)定,使之在水面之下時(shí)讓其視角中的畫面呈現(xiàn)出類似人們在水下看到的場景效果,就可以達(dá)到我們本文所討論的目的了。

        首先,我們看看如何使攝像機(jī)視角的畫面呈現(xiàn)類似在水下的感覺。我們可以先嘗試給畫面染上類似水下的淡藍(lán)綠色:在Hierarchy窗口中,我們選中“MainCamera”攝像機(jī)對象,然后在屏幕上方的Component菜單下選擇Image Effects子菜單,并選中其中的Color Correction項(xiàng),此時(shí),Inspector窗口中就會多出一組名為“Color Correction Effect”的參數(shù),我們對其中的R、G、B值做一下微調(diào),比方說把R設(shè)置為-0.4,這樣,我們切換到攝像視圖去看的話,就會發(fā)現(xiàn)畫面顏色變暗并被染上淡淡的藍(lán)綠色了。接下來,我們再嘗試使畫面變模糊:我們從剛才的Image Effects子菜單中選擇“Blur”項(xiàng),并在Inspector窗口中調(diào)整“Blur Effect”的有關(guān)參數(shù),比方說把Iterations設(shè)置為1,Blur Spread設(shè)置為0.3.這樣,我們再切換到攝像機(jī)視圖去看,就會發(fā)現(xiàn)畫面已經(jīng)呈現(xiàn)略帶模糊的藍(lán)綠色,很像在水下的感覺了。上述工作完成之后,我們運(yùn)行一下游戲場景,就會發(fā)現(xiàn),此時(shí)無論第一人稱游戲者是在水面之上還是水面之下,畫面呈現(xiàn)的都是水面之下的感覺。這樣顯然還是不符合我們的最終目的。因此,我們還需要寫一段JavaScript程序代碼,讓這個(gè)第一人稱攝像機(jī)來判斷當(dāng)前所處的位置是否再水面之下,并根據(jù)需要來開啟“Color Correction Effect”和“Blur Effect”。

        接下來,我們在Hierarchy窗口中點(diǎn)選Firsr Person Controller的攝像機(jī)子對象“MainCamera”,在Inspector窗口中檢視其相關(guān)屬性和參數(shù),會發(fā)現(xiàn)它也有一組Trasform屬性,對應(yīng)的Position的項(xiàng)也同樣包括X、Y和Z三個(gè)數(shù)值。而且切換到攝像機(jī)視圖并運(yùn)行游戲場景時(shí),會發(fā)現(xiàn)這三個(gè)數(shù)值是隨著我們操縱第一人稱游戲者在畫面上運(yùn)動(dòng)而不斷改變的。當(dāng)?shù)谝蝗朔Q游戲者走到水面之下以后,Y值就小于水面的Y值了。因此,我們只需要檢測“MainCamera”的Y值是否大于水面的Y值,即可判定游戲者是在水面之上還是在水面之下了。我們可以創(chuàng)建以下JavaScript程序代碼:

        var Camara_1 : GameObject;

        var Under : float;

        function Start(){

        Camara_1 = GameObject.Find(\"/First Person Controller/Main Camera\");

        }

        function Update () {

        if(transform.position.y < Under)

        {

        Camara_1.GetComponent(\"ColorCorrectionEffect\").enabled = true;

        Camara_1.GetComponent(\"BlurEffect\").enabled = true;

        }

        if(transform.position.y > Under)

        {

        Camara_1.GetComponent(\"ColorCorrectionEffect\").enabled = 1;

        Camara_1.GetComponent(\"BlurEffect\").enabled = 1;

        }

        }

        此段程序代碼中,我們設(shè)定當(dāng)該攝像機(jī)所在位置的高度低于“Hight”變量的數(shù)值時(shí)開啟“Color Correction Effect”和“Blur Effect”效果,高于此數(shù)值時(shí)則會關(guān)掉上述效果。我們將此段程序代碼命名為“UnderWater.js”并保存

        最后,我們再次在Hierarchy窗口中點(diǎn)選Firsr Person Controller的攝像機(jī)子對象“MainCamera”,然后把剛才創(chuàng)建好的程序代碼文件拖放到“MainCamera”項(xiàng)上面。此時(shí),在Inspector窗口中我們即可看到一個(gè)名為“UnderWater”的組件,展開該組件,可以看到該組件包含一個(gè)名為“Hight”的變量。我們點(diǎn)選此變量,然后把之前我們在“DayLightWater”對象中設(shè)定的水面高度值輸入進(jìn)去,游戲運(yùn)行時(shí),當(dāng)攝像機(jī)低于水面高度時(shí)就會開啟“Color Correction Effect”和“Blur Effect”效果,高于此數(shù)值時(shí)則會關(guān)掉上述效果。這樣,我們就實(shí)現(xiàn)了第一人稱游戲者在水面之上和水面之下游戲畫面顯示的不同視覺效果了。

        參考文獻(xiàn):

        [1]《Unity游戲開發(fā)實(shí)戰(zhàn)》,米歇爾·梅納德著,機(jī)械工業(yè)出版社

        [2]《Unity3D游戲開發(fā)》,宣雨松著,人民郵電出版社

        国产精品卡一卡二卡三| 国产亚洲成人精品久久| 亚州国产av一区二区三区伊在| 无码av免费一区二区三区试看 | 亚洲日韩中文字幕在线播放| 中文字幕一区二区人妻| 成年奭片免费观看视频天天看| 国产激情在线观看视频网址| 国产无套中出学生姝| 激情综合一区二区三区| 日韩欧美国产亚洲中文| 国产精品老女人亚洲av无| 久久精品99国产精品日本| 免费观看黄网站在线播放| 韩国女主播一区二区在线观看| 在线观看高清视频一区二区三区| 人妻熟妇乱又伦精品hd| 国产一线二线三线女| 不卡a v无码在线| 国产亚洲一本二本三道| av中文字幕潮喷人妻系列| 久久国产成人精品国产成人亚洲| 加勒比东京热久久综合| 中国亚洲一区二区视频| 亚洲中文字幕乱码第一页| 一本久久a久久精品vr综合 | 免费操逼视频| 国产99久久亚洲综合精品| 欧美洲精品亚洲精品中文字幕| 亚洲在中文字幕乱码熟女| 丰满人妻一区二区三区视频| 射死你天天日| 亚洲成AV人久久| 一区二区三区在线视频观看| 国产免费av片无码永久免费| 国产日韩A∨无码免费播放| 亚洲av区一区二区三区| 丰满少妇被粗大猛烈进人高清| 国产精品免费观看久久 | 国产小视频一区二区三区| 久久精品亚洲熟女av蜜謦|