999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Unity 3D的第三人稱攝像機被遮擋的處理

2016-12-06 08:43:21謝吉剛
電子測試 2016年21期
關鍵詞:游戲方法模型

謝吉剛

(南京工業職業技術學院計算機與軟件學院,江蘇南京,210023)

基于Unity 3D的第三人稱攝像機被遮擋的處理

謝吉剛

(南京工業職業技術學院計算機與軟件學院,江蘇南京,210023)

針對涉及第三人稱視角游戲中,因攝像機和游戲主角之間存在一定的距離,容易出現障礙物遮擋,會影響用戶體驗的情況??刹捎蒙渚€方法來探測障礙物,并在出現遮擋時將遮擋障礙物做透明化處理。

游戲;障礙物遮擋;射線方法

在3D游戲中,一般采用第一人稱視角或者第三人稱視角。第三人稱視角的實現方法一般是讓一架攝像機始終保持一定距離和角度跟隨主角。這種視覺使玩家不但能夠觀察整個場景的情況,同時也能夠把握主角的運行狀態,因此可操作性強,而且易于上手。一般戰略類動作類游戲基本上都是采用的這種視角。但是這種視角容易出現一個問題,就是當主角運動到某個位置,這里正好有一個障礙遮擋在主角和攝像機之間,就會使主角看不見,同時可能部分或全部場景也被障礙物擋住,使玩家無法正常操作,非常影響用戶體驗。有人采用的方法是出現遮擋后,將攝像機拉近,使攝像機越過障礙,但是這樣會使角色突然變大,場景畫面也會出現較大的變化,畫面出現明顯抖動。而且由于攝像機移動造成視角的變化,會影響玩家的操作。因此本文提出另一種處理方法:在出現遮擋的時候,將障礙物進行透明化處理,這樣既能讓玩家發現障礙物的存在,同時也不會影響玩家的觀察視角,保證了良好的用戶體驗。本文以一款用Unity 3D開發的第三人稱視角坦克游戲為例來說明該問題的處理原理和基本方法。

1 問題的提出

在游戲中,玩家控制主角——坦克在場景中移動,同時搜尋敵人并發起攻擊。攝像機跟隨坦克移動。場景中有墻、房屋、樹等障礙物。當坦克運動到墻的前面時,由于攝像機在墻后面,可以看到坦克被墻擋住了,玩家的視線出現了遮擋(如圖1)。這時玩家很難判斷坦克的狀態,也看不到墻后面的情況,游戲的進行受到了影響。

圖1 障礙物遮擋現象

2 問題解決原理

為解決上面的問題,首先應該做出是否出現遮擋的判斷,進而確定是哪個障礙物發生了遮擋。用Unity 3D中常見的射線方法可以很好的解決這個問題。當主角移動的時候從主角向攝像機方向發射一條射線,如果射線碰撞到的第一個對象是“攝像機”,表示主角和攝像機之間沒有別的模型遮擋,不需要做任何處理。如果射線碰撞到的第一個對象不是攝像機,那么就表示主角和攝像機之間有其他模型,出現了攝像機被遮擋的情況(如圖2)。然后需要進一步檢測障礙物是哪個模型,接著將該模型變為透明形式。

圖 2 遮擋的判斷

2.1產生射線

Unity 3D射線是3D世界中一個點向一個方向發射的一條無終點的線,在發射軌跡中與其他物體發生碰撞時,它將停止發射。射線多用于碰撞檢測、角色移動等等。Ray為Unity3D中的射線類。創建一條射線的方法是Ray (origin: Vector3, direction: Vector3),Ray.origin為射線起點,Ray. direction為射線的方向。

在本例中,射線起點為主角位置,射線終點為攝像機。因此可以這樣生成射線。

Ray ray=new Ray(Vector3.Player, transform. MainCamera);

2.2射線的碰撞檢測

Unity 3D用Physics類來處理場景中可能用到的物理運算。該類具有多個射線碰撞檢測方法,這里我們使用Physics. Linecast方法,即線性投射。該方法用來檢測射線是否與某游戲對象相交。如果該方法返回true則表示相交,返回則表示未相交。該方法在僅檢測線性投射區域,因此效率比較高。形式有 Linecast (start: Vector3, end: Vector3, out hitInfo: RaycastHit),其中start和end表示射線的起點位置和方向,out hitInfo為輸出具體碰撞信息。如果發生碰撞,具體碰撞數據和被碰撞體都會被記錄在RaycastHit結構上。

利用該方法寫出以下的碰撞檢測處理程序

2.3障礙物半透明處理

檢測到遮擋的障礙物后,如果要修改障礙物材質的透明度以使障礙物變得透明。為此需要首先設定該模型支持透明材質。選定障礙物模型,進入Inspector面板,找到Mesh Renderer選項卡,選擇Shader選項,設定材質shade的選項值為Transparent/ Diffuse(如圖3)。此時該模型即可支持透明材質。

如果該模型遮擋了主角,需要將該模型的透明度降低。方法是修改模型的材質透明度color.a的值。color.a為1表示材質完全不透明,0是完全透明。此處將透明度設定為0.5,即半透明(如圖4)??梢钥闯觯系K物變得半透明了。主要代碼如下。

Color color = obj.renderer.material.color;//取出碰撞對象的顏色給color

color.a = 0.5f;//修改對象的顏色的a通道值

obj.renderer.material.SetColor("_Color", color);

//重設對象的a通道值以半透明處理

圖 4 障礙半透明處理

經過透明化處理后,玩家既能看到障礙物的存在,同時也能夠看到障礙物后面的情況,卻不需要進行場景視覺的變化,保證了玩家的游戲體驗。

3 問題的進一步討論

試驗表明,該方法對于墻和房屋之類的比較規則的障礙物的遮擋問題解決的非常好。但是當出現比如樹或零星碎石之類的不規則物體,由于出現了遮擋和不遮擋的頻繁變換,使得障礙模型較頻繁的出現透明度變化,從而引起畫面和攝像機的抖動。改進方法是盡量將不規則障礙添加較為規則的BOX,然后把Mesh Collider換成Box Collider,這樣既可以提高系統運行效率,也能適當降低修改透明度頻率。

[1] 宣雨松. Unity 3D游戲開發[M]. 北京:人民郵電出版社2012,6: 182-185

[2] Michelle Menard(美)著 史曉明,李強 譯. Unity游戲開發實戰[M] . 北京:機械工業出版社 2012,4:165-172

[3] 程明智. Unity游戲開發技術[M].北京:國防工業出版社2012,8: 112-114

[4] 吳亞峰. Unity 3D游戲開發技術詳解與典型案例[M].北京:人民郵電出版社 2012,11: 143-148

The third person perspective camera with occluded

Xie Jigang
(Nanjing Institute of Industry Technology,Nanjing,210016,Computer and Software College)

In third person game, because a certain distance between the camera and the protagonist,prone to shelter situation,very influence of the user experience.If the ray method to detect obstacles,in the presence of occlusion the occlusion obstacles do transparent treatment can be a very good solution to this problem.

game;Occlusion;ray method

圖 3 材質支持透明的設置

猜你喜歡
游戲方法模型
一半模型
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
數獨游戲
瘋狂的游戲
飛碟探索(2016年11期)2016-11-14 19:34:47
3D打印中的模型分割與打包
爆笑游戲
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
第八章直接逃出游戲
小學科學(2015年7期)2015-07-29 22:29:00
主站蜘蛛池模板: 久久综合久久鬼| 中文毛片无遮挡播放免费| 四虎国产永久在线观看| 欧美成人aⅴ| 午夜国产不卡在线观看视频| 欧美国产另类| 91精品情国产情侣高潮对白蜜| 国产网友愉拍精品视频| 日韩小视频在线播放| 九九九精品视频| 特级aaaaaaaaa毛片免费视频| 免费观看亚洲人成网站| 亚洲永久精品ww47国产| yjizz视频最新网站在线| 日韩在线1| 色婷婷亚洲十月十月色天| 天天摸天天操免费播放小视频| 欧美一级一级做性视频| 波多野结衣无码中文字幕在线观看一区二区 | 久久国产高潮流白浆免费观看| 欧美精品v欧洲精品| 日韩欧美91| 精品亚洲国产成人AV| 88av在线| 久久精品免费国产大片| 伊人久久大香线蕉综合影视| 国产精品深爱在线| 国产91小视频| 国产在线日本| 在线观看免费人成视频色快速| 亚洲精品成人福利在线电影| 2021国产v亚洲v天堂无码| 蝌蚪国产精品视频第一页| 亚洲h视频在线| 国产精品永久不卡免费视频| 国产精品制服| 亚洲午夜福利在线| 精品国产网站| 很黄的网站在线观看| 日韩福利视频导航| 伊人成人在线视频| 中文字幕人妻av一区二区| 亚洲色无码专线精品观看| 国产亚洲精| 国产尤物jk自慰制服喷水| 日韩二区三区| 国产人妖视频一区在线观看| 欧美日韩在线观看一区二区三区| 91成人在线免费视频| 精品国产中文一级毛片在线看| 国产精品亚洲专区一区| 91亚洲影院| 中日韩一区二区三区中文免费视频 | 香蕉99国内自产自拍视频| 亚洲精品免费网站| 国产精品99久久久| 国产极品粉嫩小泬免费看| 99er这里只有精品| 色噜噜狠狠色综合网图区| 99在线视频网站| 欧美国产日本高清不卡| 欧美第一页在线| 亚洲成人在线网| 午夜精品福利影院| 国产成人高精品免费视频| 国产成人成人一区二区| 波多野结衣一区二区三区88| 亚洲三级视频在线观看| 久久精品嫩草研究院| 国产精品自在在线午夜| 日韩欧美中文| 色婷婷国产精品视频| 国产99久久亚洲综合精品西瓜tv| 免费A级毛片无码免费视频| 综合色天天| 国产视频大全| 亚洲自拍另类| 国产嫩草在线观看| 久久国产精品麻豆系列| 伊伊人成亚洲综合人网7777| 永久在线精品免费视频观看| 青草娱乐极品免费视频|