亚洲免费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
        男女午夜视频一区二区三区| 97在线观看视频| 好吊色欧美一区二区三区四区 | 开心五月激情五月天天五月五月天| 亚洲国产一区中文字幕| 五月婷婷开心六月激情| 国产香蕉视频在线播放| 精品久久久久久久无码人妻热| 综合色就爱涩涩涩综合婷婷| 人人妻人人爽人人澡欧美一区| 夜先锋av资源网站| 2022Av天堂在线无码| 亚洲精品美女久久久久99| 人妻av不卡一区二区三区| 国产中文字幕亚洲精品| 亚洲最大成人网站| 人妻夜夜爽天天爽一区| 亚洲欧美成人a∨| 国产一区,二区,三区免费视频| 热门精品一区二区三区| av在线天堂国产一区| 18禁止看的免费污网站| 国产精品亚洲欧美大片在线看| av潮喷大喷水系列无码| 国产精品二区在线观看| 亚洲无线码一区在线观看| 漂亮人妻被强中文字幕乱码| 日本人妻精品有码字幕| 亚洲a无码综合a国产av中文| 男人进去女人爽免费视频| 亚洲av日韩av不卡在线观看| 亚洲欧美日韩精品中文乱码| 在线免费观看国产视频不卡| 一区二区三区中文字幕在线播放| 精品国产亚洲av麻豆| 亚洲av美国av产亚洲av图片| 处破痛哭a√18成年片免费| 无码一区二区三区不卡AV| 区三区久久精品水蜜桃av| 国产亚洲精品90在线视频| 特黄熟妇丰满人妻无码 |