最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

用Unity實(shí)現(xiàn)傳送門效果(一)

2018-11-07 17:15 作者:皮皮關(guān)做游戲  | 我要投稿

作者:四五二十



大家好。

接下來的兩篇內(nèi)容,是用Unity來做傳送門的效果。這里是用自己的方法來做的,中途踩了許多坑不過最終還是實(shí)現(xiàn)了。下面是效果圖:

本篇文章幾乎沒有代碼。主要是介紹一下實(shí)現(xiàn)的原理。

不看code的感覺是不是很爽

先不說如何打開傳送門以及如何在傳送門中穿梭的問題,我們先來看看攝像機(jī)是怎樣將場景及主角從另一個(gè)角度渲染進(jìn)門里面的。

在現(xiàn)實(shí)生活中,如果把眼睛比作主攝像機(jī),人的眼睛是不能直接看見自己的側(cè)面的,如果一定要看則會(huì)用另外的攝像頭從側(cè)面對(duì)自己進(jìn)行拍攝,再吧顯示器材放在視線范圍內(nèi),這樣就能實(shí)時(shí)的去觀察自己的側(cè)面了。同樣的道理,要達(dá)到上圖中的效果,一個(gè)攝像機(jī)是肯定不夠的,需要其它的攝像機(jī)來輔助。

來看看我們的場景,場景很簡單,就是一個(gè)墻面的地面組成的,當(dāng)傳送門打開時(shí),就讓該處的墻暫時(shí)禁用:

讓主攝像機(jī)作為主角的眼睛始終跟隨主角移動(dòng),如果主攝像機(jī)從傳送門看出去,門里其實(shí)是什么都沒有的:

那么這段“空白”就需要填補(bǔ),剛才我們提到了其它的攝像機(jī),就是用來填補(bǔ)這個(gè)空白的。

在效果展示中,主角從橙色門中由內(nèi)而外看出去,是和輔助攝像機(jī)從藍(lán)色門由外到內(nèi)看進(jìn)來的畫面是一樣的:

所以只要將輔助攝像機(jī)看到的畫面拿來填補(bǔ)主攝像機(jī)的空缺就可以了,前提是主攝像機(jī)的渲染層級(jí)更高,我們對(duì)主攝像機(jī)的屬性進(jìn)行設(shè)置:

但是要真正的無縫銜接則對(duì)攝像機(jī)的位置關(guān)系有一定的要求,也就是說主攝像機(jī)與橙色門的位置關(guān)系同輔助攝像機(jī)與藍(lán)色門的位置關(guān)系必須是一致的:

要讓輔助攝像機(jī)的位置同步,我們可以創(chuàng)建一個(gè)空物體,取名叫Substitute,讓它成為橙色門的子物體,再創(chuàng)建一個(gè)輔助攝像機(jī),取名Camera_1,的視錐范圍要和主攝像機(jī)一樣,但渲染層級(jí)較低,將Camera_1作為藍(lán)色門的子物體:

注意這里為了方便理解使用了中文,在實(shí)際開發(fā)中請(qǐng)避免使用中文命名。

通過代碼讓Substitute實(shí)時(shí)獲取主攝像機(jī)的世界坐標(biāo)的位置與旋轉(zhuǎn),再將本地坐標(biāo)賦給Camera_1,這樣輔助攝像機(jī)與藍(lán)色門的位置和主角與橙色門的位置就會(huì)保持同步:


//獲取主攝像機(jī)世界位置和旋轉(zhuǎn)

substitute.position = mainCamera.position;

substitute.rotation = mainCamera.rotation;

//將本地位置和旋轉(zhuǎn)賦給輔助攝像機(jī)

camera_1.localPosition = substitute.localPosition;

camera_1.localRotation = substitute.localRotation;

?

同樣的方法,再創(chuàng)建一個(gè)替身和輔助攝像機(jī),也可以用來渲染藍(lán)色門內(nèi)的場景:


第三層空間的渲染


如果把主場景成為第一層空間,傳送門看進(jìn)去的是第二層,那么上圖中紅框內(nèi)渲染的就是第三層。做到第三層空間的渲染,其實(shí)還是和渲染第二層一樣的原理,創(chuàng)建渲染第三層空間的輔助攝像機(jī)Camera_2:

Camera_1與橙色門的位置關(guān)系,就是Camera_2與藍(lán)色門的位置關(guān)系。
同樣顏色的線代表相同的位置關(guān)系

同樣的方法,將第三層的另一個(gè)攝像機(jī)也創(chuàng)建好,我們來看三層空間的效果展示:

這樣就保持著三層空間的渲染,當(dāng)然也可以再繼續(xù)往下發(fā)展,除第一層空間外,每層都需要兩個(gè)攝像機(jī),方法都是一樣,越往下層的攝像機(jī)渲染層級(jí)越低,例如主攝像機(jī)的層級(jí)為0,那么第二層空間的兩個(gè)攝像機(jī)分別為-1和-2,第三層為-3和-4,且最低的攝像機(jī)的ClearFlags選項(xiàng)要設(shè)為Skybox或者SolidColor,其它所有攝像機(jī)都設(shè)置為Depth only。

層級(jí)最低的攝像機(jī)

而每個(gè)輔助攝像機(jī)都需要一個(gè)Substitute來幫助定位,如果要渲染三層空間,就一共需要四個(gè)Substitute(四個(gè)輔助攝像機(jī))。

本期文章內(nèi)容不多,主要是介紹了傳送門的制作原理。當(dāng)大家理解之后,在下一期中將會(huì)正式介紹物體在門中穿梭的實(shí)現(xiàn)方法,屆時(shí)會(huì)少不了代碼,并且同時(shí)會(huì)介紹過程中會(huì)遇到的許多坑。

每個(gè)坑都是一行淚

最后想系統(tǒng)學(xué)習(xí)游戲開發(fā)的童鞋,歡迎訪問 :http://www.levelpp.com/ ??? ?

游戲開發(fā)攪基QQ群:869551769? ??

微信公眾號(hào):皮皮關(guān)

用Unity實(shí)現(xiàn)傳送門效果(一)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
靖江市| 中宁县| 普洱| 安化县| 潼关县| 湖州市| 图片| 安塞县| 桦南县| 新营市| 乾安县| 噶尔县| 布尔津县| 深州市| 绥芬河市| 谢通门县| 钟山县| 阳曲县| 北票市| 安庆市| 精河县| 澄城县| 永康市| 荥经县| 惠来县| 钟祥市| 兴安县| 汝阳县| 射阳县| 洪江市| 吉首市| 凤台县| 射洪县| 灵璧县| 福安市| 崇仁县| 合肥市| 兴城市| 江达县| 太和县| 惠水县|