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

        ?

        基于Unity的校園3D跑酷游戲的研究與開發(fā)

        2017-03-21 19:24:23竇楊輝王巍何鑫毛文泰
        計(jì)算機(jī)時(shí)代 2017年3期
        關(guān)鍵詞:碰撞檢測(cè)腳本引擎

        竇楊輝+王巍+何鑫+毛文泰

        摘 要: 介紹了基于Unity游戲引擎實(shí)現(xiàn)的校園主題的3D跑酷類游戲開發(fā)過程,Unity是一款跨平臺(tái)的游戲引擎,基于該引擎可以很便捷的開發(fā)出適合多種平臺(tái)運(yùn)行的游戲。游戲開發(fā)過程包括場(chǎng)景搭建、人物創(chuàng)建、游戲腳本及邏輯實(shí)現(xiàn),游戲邏輯部分對(duì)碰撞檢測(cè)算法進(jìn)行了詳細(xì)的描述。實(shí)驗(yàn)結(jié)果表明,研究實(shí)現(xiàn)的第三人稱視角跑酷游戲,用戶體驗(yàn)好,校園主題貼近生活,能夠?yàn)橥婕規(guī)聿煌谄渌螒虻母惺堋?/p>

        關(guān)鍵詞: Unity游戲引擎; 跑酷游戲; 3D游戲; 碰撞檢測(cè)

        中圖分類號(hào):TP399 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1006-8228(2017)03-52-03

        Abstract: The campus theme 3D Parkour game development process based on Unity is described. The Unity game engine is a cross platform game engine can be used to conveniently develop games on a variety of platforms. Game design includes scene building, character creation, game scripts and logic processing. The collision detection algorithm is introduced in the part of game logic. The experimental results show that the novel third person view Parkour game researched in this paper has good user experience, and the new game theme of campus life can bring game experience different from other games' to the game players.

        Key words: Unity game engine; Parkour game; 3D game; collision detection

        0 引言

        近年來移動(dòng)通信網(wǎng)絡(luò)技術(shù)飛速發(fā)展,越來越多的人通過智能手機(jī)利用碎片化的時(shí)間來玩休閑類游戲,尋找樂趣放松心情,于是手游行業(yè)得到了快速的發(fā)展,其中跑酷類游戲因?yàn)槠渲T多優(yōu)點(diǎn)而深受大眾喜愛。例如最近幾年來非常流行的跑酷類游戲就有Temple Run、Subway Surfers等。本文主要介紹利用Unity3D游戲引擎來開發(fā)一款休閑跑酷類游戲,以及利用Unity3D游戲引擎將游戲發(fā)布到Android平臺(tái)上。

        1 Unity游戲引擎介紹

        Unity3D是Unity Technologies公司開發(fā)的專業(yè)游戲引擎。它能夠讓游戲開發(fā)者輕松創(chuàng)建出2D游戲、3D游戲,以及實(shí)現(xiàn)建筑可視化、實(shí)時(shí)三維動(dòng)畫等,其具有強(qiáng)大的跨平臺(tái)性[1]。因?yàn)檫@些諸多優(yōu)點(diǎn),使得越來越多的游戲開發(fā)人員選擇Unity3D游戲引擎。

        2 校園跑酷游戲設(shè)計(jì)與實(shí)現(xiàn)

        2.1 游戲開發(fā)前的準(zhǔn)備工作

        2.1.1 游戲類型

        本游戲采用Unity3D游戲引擎為開發(fā)工具,采用C#腳本語言作為開發(fā)語言,通過智能手機(jī)的觸摸技術(shù)而實(shí)現(xiàn)第三人稱酷跑類游戲。

        2.1.2 運(yùn)行的平臺(tái)

        本游戲可以運(yùn)行在win7及以上系統(tǒng)平臺(tái)和Android2.0及以上系統(tǒng)平臺(tái)。

        2.1.3 操作方式

        校園跑酷游戲是一款操作簡(jiǎn)單的游戲,在手機(jī)端需要在手機(jī)屏幕上下左右滑動(dòng)就能控制游戲角色躲避障礙物,在PC端是通過鼠標(biāo)的上下左右滑動(dòng)控制角色,在游戲中角色會(huì)一直沿著設(shè)計(jì)好的路線自動(dòng)跑動(dòng),玩家只需要控制躲避障礙物即可,如果在跑動(dòng)過程中撞到障礙物,玩家死亡游戲結(jié)束。

        2.2 游戲設(shè)計(jì)

        游戲的場(chǎng)景設(shè)計(jì)方面,采用的是大連民族大學(xué)的校園環(huán)境,在跑酷路線和場(chǎng)景的渲染上和學(xué)校的真實(shí)環(huán)境相似度很高,同時(shí)在障礙物的選擇上也和真實(shí)生活息息相關(guān),比如沒有井蓋的陷阱等。而我們選用的游戲角色則是一個(gè)將要遲到的大學(xué)生,游戲創(chuàng)意符合校園的氣息。游戲的設(shè)計(jì)整體思路如下。

        首先準(zhǔn)備游戲素材,校園內(nèi)的各種場(chǎng)景和障礙物模型等素材都是通過3D Max這款美工軟件制作出來的,也包括一些元素圖片。其中游戲角色的制作會(huì)相對(duì)困難一些,然后把這些制作好的素材直接導(dǎo)入到Unity中就可以使用。

        2.2.1 游戲場(chǎng)景搭建

        游戲場(chǎng)景主要是對(duì)游戲地圖、燈光等環(huán)境因素進(jìn)行設(shè)置。游戲中可以包括多個(gè)場(chǎng)景,每個(gè)場(chǎng)景內(nèi)元素的風(fēng)格要統(tǒng)一。

        ⑴ 新建一個(gè)場(chǎng)景。

        ⑵ 導(dǎo)入資源。將游戲準(zhǔn)備好的材質(zhì)、貼圖、模型等資源導(dǎo)入到Project面板下的資源Assets文件夾中。

        ⑶ 設(shè)置環(huán)境光和創(chuàng)建光源。

        ⑷ 在場(chǎng)景中擺放模型。

        ⑸ 添加天空盒。

        至此,基本的游戲場(chǎng)景搭建完畢。

        2.2.2 游戲腳本及邏輯的實(shí)現(xiàn)

        游戲腳本對(duì)于一款游戲來說是靈魂部分,所以游戲腳本的編寫至關(guān)重要。下面將具體介紹關(guān)于游戲腳本和邏輯方面的實(shí)現(xiàn)。

        ⑴ 主攝像機(jī)的設(shè)置及腳本開發(fā)

        主攝像機(jī)腳本開發(fā)的主要功能是呈現(xiàn)主界面以及在各個(gè)界面直接進(jìn)行跳轉(zhuǎn)。下面是具體實(shí)現(xiàn)步驟。

        ① 在“Assets”文件夾中點(diǎn)擊“Create”選項(xiàng)下的“C# Script”創(chuàng)建腳本,命名為“Welcome”。

        ② 雙擊腳本,進(jìn)入“MonoDevelop”編輯器中,開始編輯腳本,此腳本主要完成界面的搭建以及向各個(gè)界面的跳轉(zhuǎn)?!癕onoDevelop”編輯器是Unity3D游戲引擎集成的編輯器,它支持使用C#、Javascript和Boo語言開發(fā)[2]。

        ③ 當(dāng)腳本編寫完成后,將它拖到Main Camera組件上,完成主攝像機(jī)腳本的綁定。

        ⑵ 人物角色的創(chuàng)建及腳本的開發(fā)

        人物角色對(duì)于一個(gè)游戲項(xiàng)目來說是至關(guān)重要的,沒有人物,游戲就只有一個(gè)空殼,所以人物的創(chuàng)建和人物行為的設(shè)計(jì)是游戲開發(fā)的核心。

        人物的創(chuàng)建分為兩個(gè)部分,一部分是人物移動(dòng)的邏輯編寫,另一個(gè)部分是人物動(dòng)作跟隨人物移動(dòng)的播放。其具體實(shí)現(xiàn)方式如下。

        ① 首先是人物移動(dòng)的邏輯實(shí)現(xiàn)。人物分為跑步、左移、右移、跳躍、下滑、倒下六個(gè)動(dòng)作。

        跑步的實(shí)現(xiàn)較簡(jiǎn)單,思路如下:給定一個(gè)初始方向,初始速度,然后結(jié)合人物的動(dòng)作進(jìn)行跑步。

        左移和右移的動(dòng)作比較復(fù)雜一些,因?yàn)檫@兩個(gè)動(dòng)作需要計(jì)算鼠標(biāo)或手指從開始點(diǎn)擊(手機(jī)系統(tǒng)是開始觸摸)到鼠標(biāo)、手指抬起的距離。根據(jù)距離的不同,來判斷人物是左移還是右移。

        跳躍動(dòng)作實(shí)現(xiàn)的思路是當(dāng)鼠標(biāo)或手指向屏幕上方滑動(dòng)時(shí),計(jì)算這段點(diǎn)擊(觸摸)和抬起的距離,當(dāng)距離大于設(shè)定的一個(gè)閾值時(shí),讓人物進(jìn)行跳躍動(dòng)作。代碼如下:

        if (Mathf.Abs(touchOffset.x)

        && touchOffset.y>0)

        { if (isJumping==false)

        { isJumping=true;

        isUp=true;

        haveJumpHeight=0;

        }

        return TouchDir.Top;

        }

        同理,下滑的動(dòng)作也是類似實(shí)現(xiàn),不同的檢測(cè)算法是在于此時(shí),人物向屏幕的下方滑動(dòng)。

        倒下的動(dòng)作比較簡(jiǎn)單,先判斷人物角色是否碰到障礙物,如果是,那么就執(zhí)行倒下的動(dòng)作。

        ② 人物動(dòng)作的實(shí)現(xiàn)技術(shù)。

        Unity引擎經(jīng)過多個(gè)版本的發(fā)展,其動(dòng)畫系統(tǒng)也做了很大的改變。動(dòng)畫系統(tǒng)是Unity引擎的特色之處。在Unity4.0版本以后出現(xiàn)了新的Mecanim動(dòng)畫系統(tǒng),由于使用Mecanim動(dòng)畫系統(tǒng),需要美工人員專業(yè)的動(dòng)作配合,所以本游戲開發(fā)還是采用以前的動(dòng)畫系統(tǒng)。

        Unity3.x版本中播放動(dòng)畫的時(shí)候使用Play()或CrossFade(),直接播放動(dòng)畫或淡入淡出播放動(dòng)畫[3]。

        animation.Play("name");

        animation.CrossFade("name");

        也可以使用隊(duì)列播放,讓動(dòng)畫形成一個(gè)隊(duì)列。

        在本游戲中動(dòng)作的具體實(shí)現(xiàn)算法是:

        先判斷當(dāng)前的游戲狀態(tài),即是哪個(gè)動(dòng)作狀態(tài),然后再調(diào)用animation.Play(“name”)函數(shù)進(jìn)行相應(yīng)處理。例

        if(animation.isJump) {

        animation.Play(“Jump”);

        }

        至此,人物角色的創(chuàng)建完成。

        ⑶ 各種障礙物添加碰撞器進(jìn)行碰撞檢測(cè)

        當(dāng)游戲主角與其他游戲?qū)ο驡ameObject發(fā)生碰撞時(shí),需要進(jìn)行一些特殊事件的處理。比如,在本游戲中,當(dāng)人物在奔跑的過程中,如果遇到了障礙物,玩家人物就會(huì)死亡,游戲結(jié)束,這時(shí),我們需要檢測(cè)到是否有碰撞現(xiàn)象產(chǎn)生,即碰撞檢測(cè)[4]。

        首先,我們要明確產(chǎn)生碰撞信息所需要的條件。事實(shí)上,Unity3D集成開發(fā)環(huán)境中進(jìn)行碰撞檢測(cè)的方式有兩種,一種是利用碰撞器,另一種是利用觸發(fā)器。碰撞器的使用方式是將某一類碰撞器加載到游戲?qū)ο笊?,而觸發(fā)器是一種屬性,只需要選中這個(gè)屬性,即可實(shí)現(xiàn)觸發(fā)器工作。

        在本游戲中,運(yùn)用到碰撞檢測(cè)的地方有人物角色和各種障礙物。當(dāng)人物碰到障礙物后發(fā)生碰撞檢測(cè),然后人物執(zhí)行倒下的動(dòng)作,游戲結(jié)束。因?yàn)樵谟螒蛑惺峭ㄟ^碰撞障礙物來判斷玩家是否死亡的,所以要給每個(gè)障礙物和游戲角色分別添加碰撞器,尤其是游戲角色更需要大小兩個(gè)碰撞器,因?yàn)橛螒蚪巧诙惚苷系K物時(shí)有一個(gè)滑行的動(dòng)作,如果這個(gè)動(dòng)作還用大碰撞器的話就會(huì)出現(xiàn)錯(cuò)誤,所以此處需要一個(gè)判斷,判斷玩家如果當(dāng)時(shí)正在處于滑行動(dòng)作就啟動(dòng)小碰撞器。

        ⑷ 最后就是游戲的發(fā)布與打包

        配置好Android開發(fā)環(huán)境后,在Unity開發(fā)環(huán)境中打開菜單,找到build settings,在發(fā)布設(shè)置窗口中找到要發(fā)布的平臺(tái),即Android選項(xiàng),將涉及到游戲運(yùn)行的各個(gè)場(chǎng)景拖拽進(jìn)去。再點(diǎn)擊按鈕即可成功發(fā)布[5]。如圖1所示。游戲場(chǎng)景的索引值或者是場(chǎng)景在設(shè)置中的順序決定了場(chǎng)景的標(biāo)識(shí)。

        3 游戲開發(fā)測(cè)試

        游戲中有三種狀態(tài),分別為游戲未開始狀態(tài),游戲運(yùn)行狀態(tài),失敗狀態(tài)。游戲主界面,即游戲未開始狀態(tài)選用的是大連民族大學(xué)正門的圖片,同時(shí)上面的開始游戲按鈕可以控制游戲的開始,退出按鈕可以控制游戲的退出,而成績(jī)積分等信息由于還沒開始游戲,所以暫無數(shù)據(jù),如圖2所示。

        在開始游戲后,由于跑酷類游戲的特點(diǎn)是只要玩家不觸碰障礙物就會(huì)一直奔跑下去,因此游戲開發(fā)過程中涉及到跑道的供給。本游戲提供三條跑道,在跑完一條跑道之后會(huì)進(jìn)行后臺(tái)的碰撞檢測(cè),證明玩家已經(jīng)通過這條跑道,然后在玩家進(jìn)入第二條跑道時(shí)自動(dòng)創(chuàng)建第三條跑道,刪除第一條跑道,以此類推,始終保持游戲場(chǎng)景中有兩條跑道。這樣就會(huì)給玩家一種無窮無盡的感覺,如圖3所示。

        4 結(jié)束語

        本文介紹了基于校園場(chǎng)景的跑酷類游戲的設(shè)計(jì)與開發(fā)過程,包括基于Unity的游戲資源的導(dǎo)入和腳本的掛載,游戲人物的處理,特別是在游戲邏輯方面,我們對(duì)玩家動(dòng)作進(jìn)行了詳盡的處理。游戲運(yùn)行良好,校園實(shí)景的加載是游戲的創(chuàng)新之處。未來工作是優(yōu)化游戲代碼,解決多個(gè)模型導(dǎo)入帶來的卡頓現(xiàn)象。

        參考文獻(xiàn)(References):

        [1] 吳亞峰,杜化美,于復(fù)興.Unity游戲案例開發(fā)大全[M].人民郵電出版社,2015.

        [2] Unity Technologies. Unity官方案例精講[M].中國(guó)鐵道出版社,2015.

        [3] 宣雨松.Unity3D游戲開發(fā)[M].人民郵電出版社,2012.

        [4] 林巧民等.3D游戲開發(fā)中的碰撞檢測(cè)算法研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2010.20(5):39-42

        [5] 陶陽.基于Unity在Android平臺(tái)上開發(fā)游戲的方法[J].電腦編程技巧與維護(hù),2012.19:73-77

        猜你喜歡
        碰撞檢測(cè)腳本引擎
        酒駕
        全新預(yù)測(cè)碰撞檢測(cè)系統(tǒng)
        安奇奇與小cool 龍(第二回)
        基于BIM的鐵路信號(hào)室外設(shè)備布置與碰撞檢測(cè)方法
        數(shù)據(jù)庫系統(tǒng)shell腳本應(yīng)用
        Unity3D中碰撞檢測(cè)問題的研究
        藍(lán)谷: “涉藍(lán)”新引擎
        商周刊(2017年22期)2017-11-09 05:08:31
        快樂假期
        BIM技術(shù)下的某辦公樓項(xiàng)目管線碰撞檢測(cè)
        無形的引擎
        河南電力(2015年5期)2015-06-08 06:01:46
        亚洲精品国产第一区三区| √天堂中文官网8在线| 精品国产群3p在线观看| 国产丝袜高跟美腿一区在线| 国产亚洲午夜精品久久久| 国产av无码专区亚洲avjulia| 久久婷婷国产剧情内射白浆| 亚洲欧洲AV综合色无码| 日本少妇又色又紧又爽又刺激 | 久久亚洲国产成人精品v| 国产伦奸在线播放免费| 丁香五月亚洲综合在线| 国产在线观看www污污污| 无码在线观看123| 99久久精品人妻一区二区三区| 日韩内射美女片在线观看网站| 又污又爽又黄的网站| 国产精品久久久久久久专区| 人妻少妇被猛烈进入中文| 欧美老熟妇乱子| 无码精品国产一区二区三区免费 | 欧美aaaaaa级午夜福利视频| 国产成人啪精品午夜网站| 国产一级自拍av播放| 久久99精品久久久久久清纯| 国产成人精品日本亚洲11| 99久久99久久精品免观看| 你懂的视频在线看播放| 日本护士xxxx视频| 91手机视频在线| 亚洲成人免费久久av| 丰满人妻熟妇乱又仑精品| 日韩电影一区二区三区| 亚洲AV成人无码天堂| 日本二区在线视频观看| 久久久www免费人成精品| 国产成人美女AV| 亚洲精品国产成人久久av盗摄| 国产卡一卡二卡3卡4乱码| 亚洲另类激情综合偷自拍图| 日韩av一区在线播放|