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)。可以看出,障礙物變得半透明了。主要代碼如下。

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
主站蜘蛛池模板: 亚洲国产中文在线二区三区免| 久久性妇女精品免费| 国产精品亚洲专区一区| 欧美午夜在线播放| 四虎永久免费地址| 国产日韩欧美中文| 美美女高清毛片视频免费观看| 久久精品无码专区免费| 天堂va亚洲va欧美va国产 | 亚洲精品男人天堂| 欧美成人二区| 伊人久久婷婷五月综合97色| 熟妇无码人妻| 欧洲欧美人成免费全部视频| 亚洲一区二区在线无码| 九色最新网址| 午夜激情婷婷| 亚洲精品天堂在线观看| 亚洲AⅤ综合在线欧美一区| 成人福利在线看| 国产va免费精品观看| 亚洲美女一区二区三区| 久久久久亚洲精品无码网站| 97久久精品人人| 一本色道久久88| 在线观看无码av五月花| 久久天天躁狠狠躁夜夜2020一| 国产成人精品一区二区三区| 成人一区在线| 91视频免费观看网站| 国产在线一二三区| 日韩一区精品视频一区二区| 国产精品视频导航| 午夜a视频| 99热这里只有精品2| 尤物亚洲最大AV无码网站| 91精品国产综合久久不国产大片| 欧美日韩在线第一页| 日韩欧美国产成人| 天天色天天综合| 亚洲天堂高清| 自拍偷拍一区| 久久无码av一区二区三区| 日韩一级毛一欧美一国产 | 国产青青草视频| 操美女免费网站| 国产精品白浆无码流出在线看| 国产精品思思热在线| 久久国产精品波多野结衣| 超清无码一区二区三区| 91精品啪在线观看国产| 久久久精品国产亚洲AV日韩| 九九热精品免费视频| 久久99热这里只有精品免费看| 99福利视频导航| 国产一级妓女av网站| 亚洲熟女中文字幕男人总站| 国产无码网站在线观看| 亚洲视频免费在线| 欧美精品黑人粗大| 日韩二区三区| 亚洲欧美日韩天堂| 四虎永久免费地址| 在线看AV天堂| 欧美一级夜夜爽www| 99久久国产综合精品2023| 亚洲va在线观看| 三上悠亚在线精品二区| 日本亚洲成高清一区二区三区| 日韩欧美国产区| 国产18页| 嫩草在线视频| 久久精品一品道久久精品| 国产精品对白刺激| 54pao国产成人免费视频| 天天操天天噜| 国产丝袜91| 国产成人午夜福利免费无码r| 亚洲一区二区视频在线观看| 国产丝袜91| 中文字幕在线视频免费| 青青青草国产|