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

        ?

        基于Unity平臺的三維坦克游戲設計與實現(xiàn)

        2015-09-18 13:14:20李慎亮司占軍
        軟件導刊 2015年8期

        李慎亮 司占軍

        摘要:為了解Unity與三維建模軟件的兼容問題,以及游戲的基本制作流程,以90坦克為原型,在3D Max中進行了建模、UV分展。在PS 中進行貼圖制作,在Gold Wave中進行音樂切分制作;在Unity中綜合運用各種資源,結合AI、剛體檢測等技術實現(xiàn)了碰撞檢測、鍵盤檢測、爆炸等效果,最終制作出了一款操作性好、畫面精良、具有一定趣味性的3維TPS游戲。

        關鍵詞:TPS;Unity;三維游戲;坦克游戲

        DOIDOI:10.11907/rjdk.151403

        中圖分類號:TP319

        文獻標識碼:A 文章編號文章編號:16727800(2015)008015203

        0 引言

        計算機軟硬件技術的發(fā)展水平越來越高,畫面簡單、立體感差的二維平面游戲正在淡出人們的視野。立體感強、操作性好、畫面精美的三維游戲越來越受到玩家和游戲廠商的喜愛。虛擬現(xiàn)實、體感檢測等技術的發(fā)展更是為游戲產(chǎn)業(yè)的發(fā)展提供了良好的技術支持。

        本文以三維坦克游戲的開發(fā)過程為例,介紹了Unity平臺與其它軟件之間的關聯(lián)以及注意事項。

        1 游戲設計

        為了讓游戲情節(jié)更好地展開,增加游戲的趣味性,本次實驗設計了山區(qū)狙擊戰(zhàn)、城鎮(zhèn)街道戰(zhàn)及工廠會戰(zhàn)3種游戲場景,游戲設計如圖1所示。

        2 預期效果

        (1)鍵盤監(jiān)聽。能夠監(jiān)聽鍵盤上的按鍵,根據(jù)玩家按下的不同按鍵作出相應反應。例如按下A、S、W、D鍵會讓坦克向左、右、前、后行駛。

        (2)攝像頭跟隨。攝像機跟隨游戲中的角色移動。攝像機要有廣闊的視野,以便玩家能夠及時了解游戲的變化。

        (3)坦克AI(人工智能)。標識為敵人的坦克能夠在地圖范圍內(nèi)隨意走動,且能夠自主判斷在其范圍內(nèi)的其它坦克是否為敵人。

        (4)爆炸效果。坦克的炮彈射出后擊中目標產(chǎn)生爆炸效果,同時播放爆炸音效,模擬真實的爆炸情景。

        (5)炮臺轉向。坦克靜止后,坦克炮臺隨著鼠標的移動在一定角度范圍內(nèi)轉向。

        圖1 游戲的基本元素與設計流程

        3 實驗流程

        3.1 模型創(chuàng)建與優(yōu)化

        模型是游戲的基礎,精致的三維模型能夠提高游戲的真實性。Unity平臺支持多個三維軟件創(chuàng)建的模型,本實驗選用上手相對較快的3D Max軟件,在3D Max中利用多邊形建模和Box模型拼接結合的方式對坦克建模。需要注意的是3D Max與Unity中單位之比為0.01:1,即在3D Max中的1cm就是Unity中的1m。為保證單位的統(tǒng)一,實驗中將3D Max的系統(tǒng)單位設置為cm。一般來說,游戲中模型的面數(shù)越多,游戲所消耗的資源就越多,游戲的流暢度就會降低。因此需要在3D Max中使用線的分隔、點的焊接等命令將模型的面設置成三邊面。

        3.2 UV分展

        如果說模型是三維游戲的骨架,那貼圖就是游戲的衣服。精美的貼圖使游戲畫面更加絢麗、真實。畫面的精美程度與游戲消耗的資源數(shù)是成正比的。因此,要減少游戲消耗的資源,不僅要減少游戲模型的畫面數(shù),還要利用高精度貼圖的方法來制作游戲。高精度貼圖的制作需要對高精度模型進行UV分展、烘培,然后導出到PS中進行貼圖繪制。精細的UV劃分能夠讓模型有著豐富的細節(jié)和變化,增加模型的真實感。在分展UV時,結合使用棋盤格材質(zhì)以及松弛等方法,對UV進行分展、整合,最后渲染出UV模板,如圖2所示。

        圖2 模型UV的分展、整合

        將繪制完畢的貼圖重新導入到3D Max中,并對創(chuàng)建完畢的低精度模型進行貼圖。此時低精度模型與高精度模型的比例應為1:1。

        3.3 模型導出導入

        實驗中直接導出fbx格式模型。在導出之前需要將每塊模型的坐標歸零。在3D Max中利用坐標調(diào)整工具調(diào)整坐標的方向及位置并保存。導出模型時,選擇導出為fbx格式,并勾選嵌入媒體選項。

        導出的模型直接拖入Unity中的資源面板就可以實現(xiàn)資源的導入,而且模型的貼圖等數(shù)據(jù)也會一并導入到Unity中(Untiy的面板命令也可導入資源)。

        3.4 地形與環(huán)境制作

        選擇菜單 terrain→create terrain,在工作區(qū)域中出現(xiàn)一個地形圖(長方形),調(diào)整地形大小。選擇菜單terrain→flatten heightmap,設置地形高度[1]。

        Unity自帶的地形編輯器具有上凸、下凹等命令,利用這些命令可以模擬出山川、丘陵、小島等環(huán)境。

        Unity中有兩種添加花草樹木的方法,一種是利用預制物體,將樹木挨個向場景中添加;另一種是利用地形編輯菜單欄中的筆刷工具向場景中添加樹木。

        添加預制物體需要將樹木變?yōu)轭A制物體,再拖拽到場景中進行布置。預制物體是指Unity中為了更有效地使用資源,在Unity內(nèi)部創(chuàng)建的一個模板,該模板的所有副本都是它的一個實例。預制物體使用時需要將物體挨個拖入到場景中,對于場景較大的地方來說比較麻煩,而且不同的環(huán)境還要編寫不同的代碼來實現(xiàn)不同的效果,例如風吹的效果。由于預制是真實的三維模型,因而真實性更高。預制物體比較適合場景中樹木的制作。

        圖3 Untiy的地形編輯命令面板

        圖4 游戲中的樹木

        筆刷工具添加的花草樹木是利用二維貼圖來模擬現(xiàn)實三維效果,與使用預制制作的樹木相比更加適合大規(guī)模的樹木制作,例如森林、草地等。

        石塊和房屋等資源需要在三維軟件中創(chuàng)建模型,貼圖制作后導入到Unity中使用,也可以去Unity Store中尋找需要的資源購買使用。

        3.5 腳本編寫

        Unity是一個面向對象的游戲引擎,腳本是三維游戲開發(fā)的重要組成部分,是游戲引擎與游戲素材資源之間的紐帶[2],游戲物體實現(xiàn)的各種效果都需要腳本來控制,例如坦克的移動:

        function Update () {

        if (Input.GetKey(KeyCode.Escape)){

        move=false;

        }

        if (controlled&&move){

        var x=Input.GetAxis("Horizontal")*Time.deltaTime*speed;

        var z=Input.GetAxis("Vertical")*Time.deltaTime*speed;

        transform.Translate(x,0,z);

        if(Input.GetKey(KeyCode.A)){

        transform.RotateAround(rotate_point.position,Vector3.up,-rotate_speed);

        }

        if(Input.GetKey(KeyCode.D)){

        transform.RotateAround(rotate_point.position,Vector3.up,rotate_speed);

        }

        }

        }

        AI偽碼設計:①為坦克設置敵我標識Flag;②定義最遠攻擊距離D2,以及攻擊角度;③定義與其它剛體最小的接近距離D3;4④射射線實時檢測一定范圍內(nèi)的剛體;⑤能否攻擊敵人B;⑥If(剛體Flag==敵人){

        計算距離D1

        If (D1

        攻擊

        B=false

        調(diào)用計時函數(shù);

        B=true;

        }

        } else {

        計算距離D1

        If(D1

        調(diào)用轉向函數(shù)

        }

        }

        爆炸效果

        function OnCollisionStay(collision:Collision){

        Instantiate(boomFire,this.transform.position,this.transform.rotation);

        gameObject.renderer.enabled=false;

        gameObject.collider.enabled=false;

        play=true;

        playmusic();

        }

        3.6 炮塔轉向

        坦克建模時需要將坦克分為炮臺和身體兩個部分。因為炮臺前后左右的移動要受到身體的限制,但是旋轉只會受到鼠標的影響,因此需要在Unity中將其設置為父子關系,并分別設置腳本,炮臺的腳本代碼如下:

        function update(){

        if(tank_controll.move){

        checkMouseMove();

        if(FirePoint==null){

        return;

        }

        if(Input.GetMouseButtonDown(0)){

        if(CurrBullet>0){

        var clone:Transform;

        clone = Instantiate(BULLET.FirePoint.transform.position,

        FirtePoint.transform.ratation);

        Var fwd:Vector3=

        transform.TransformDirection(Vector3.right);

        }

        }

        }

        }

        function checkMouseMove(){

        if(Input.GetMouseButton(1)){

        var h:: float=2*Input.GetAxis("Mouse X");

        transform.Rotate(0,h0);

        }

        }

        4 完善和測試發(fā)布

        游戲制作完成后,為了檢查游戲是否完整,能否達到預期效果,需要對其進行調(diào)試和運行[3]。進入游戲后,首先測試游戲的基本操作,以及炮彈的發(fā)射、爆炸等功能,還要測試AI系統(tǒng)是否正常。

        經(jīng)過測試,游戲基本達到預期效果,各界面切換流暢,運行正常。

        5 結語

        使用3D Max軟件建模,結合使用圖像處理、聲音處理等軟件以及游戲引擎Unity,為該款游戲的實現(xiàn)搭建基本環(huán)境。通過模型創(chuàng)建、貼圖制作、場景創(chuàng)建、規(guī)則制定并結合鼠標鍵盤檢測、爆炸效果、碰撞檢測等技術,制作了一款TPS游戲,經(jīng)測試,運行效果良好。不足的是游戲的趣味性、可操作性較差,交互設計也較少,仍需作進一步的改進。

        參考文獻:

        [1] 王亞萍. 淺析Unity 3D 創(chuàng)建環(huán)境地形[J] .計算機光盤軟件與應用,2012 ,19(2):175178.

        [2] 伍傳敏,張帥,邱錦明.基于 Unity3D 的 FPS 游戲設計與開發(fā)伍[J]. 三明學院學報, 2012,29(2):3540.

        [3] 董健. 一款基于Unity3D的移動平臺游戲的設計[J]. 軟件工程師,2014,17(12):3435.

        (責任編輯:杜能鋼)

        伊人色综合久久天天五月婷| 青青草伊人视频在线观看| 91成人自拍视频网站| 你懂的视频网站亚洲视频| 欧美最猛性xxxx| 国产人妻丰满熟妇嗷嗷叫| 国产精品无码日韩欧| 亚洲欧美成人在线免费| 国产免费一区二区三区在线观看 | av在线免费观看大全| 久久久久亚洲av成人片| 久久夜色精品国产噜噜亚洲av| 无码成人片一区二区三区| 国产三级黄色的在线观看| 国产护士一区二区三区| 免费观看全黄做爰大片| 亚洲av永久精品爱情岛论坛| 久久亚洲av永久无码精品| 日韩av在线不卡观看| 国产主播性色av福利精品一区| 久久精品国产99国产精品亚洲| 日本少妇被黑人xxxxx| 色播中文字幕在线视频| 日本熟女视频一区二区三区| 国产青青草在线观看视频| 国产高跟黑色丝袜在线| av无码精品一区二区三区四区| 中文字幕乱码中文乱码毛片| 国产三级不卡视频在线观看| 帅小伙自慰videogay男男| 亚洲精华国产精华液的福利| 亚洲国产剧情在线精品视| 中文字幕文字幕一区二区| 青春草在线视频观看| 成av免费大片黄在线观看| 丰满少妇又紧又爽视频| 99久久久69精品一区二区三区| 老熟妇乱子交视频一区| 日韩制服国产精品一区| 国产chinese在线视频| 国产精品亚洲一区二区三区久久|