• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

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

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

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

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

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

      中圖分類號:TP399 文獻標志碼:A 文章編號: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 引言

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

      1 Unity游戲引擎介紹

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

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

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

      2.1.1 游戲類型

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

      2.1.2 運行的平臺

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

      2.1.3 操作方式

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

      2.2 游戲設(shè)計

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

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

      2.2.1 游戲場景搭建

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

      ⑴ 新建一個場景。

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

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

      ⑷ 在場景中擺放模型。

      ⑸ 添加天空盒。

      至此,基本的游戲場景搭建完畢。

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

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

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

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

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

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

      ③ 當腳本編寫完成后,將它拖到Main Camera組件上,完成主攝像機腳本的綁定。

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

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

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

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

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

      左移和右移的動作比較復(fù)雜一些,因為這兩個動作需要計算鼠標或手指從開始點擊(手機系統(tǒng)是開始觸摸)到鼠標、手指抬起的距離。根據(jù)距離的不同,來判斷人物是左移還是右移。

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

      if (Mathf.Abs(touchOffset.x)

      && touchOffset.y>0)

      { if (isJumping==false)

      { isJumping=true;

      isUp=true;

      haveJumpHeight=0;

      }

      return TouchDir.Top;

      }

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

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

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

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

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

      animation.Play("name");

      animation.CrossFade("name");

      也可以使用隊列播放,讓動畫形成一個隊列。

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

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

      if(animation.isJump) {

      animation.Play(“Jump”);

      }

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

      ⑶ 各種障礙物添加碰撞器進行碰撞檢測

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

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

      在本游戲中,運用到碰撞檢測的地方有人物角色和各種障礙物。當人物碰到障礙物后發(fā)生碰撞檢測,然后人物執(zhí)行倒下的動作,游戲結(jié)束。因為在游戲中是通過碰撞障礙物來判斷玩家是否死亡的,所以要給每個障礙物和游戲角色分別添加碰撞器,尤其是游戲角色更需要大小兩個碰撞器,因為游戲角色在躲避障礙物時有一個滑行的動作,如果這個動作還用大碰撞器的話就會出現(xiàn)錯誤,所以此處需要一個判斷,判斷玩家如果當時正在處于滑行動作就啟動小碰撞器。

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

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

      3 游戲開發(fā)測試

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

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

      4 結(jié)束語

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

      參考文獻(References):

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

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

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

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

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

      猜你喜歡
      碰撞檢測腳本引擎
      酒駕
      全新預(yù)測碰撞檢測系統(tǒng)
      基于BIM的鐵路信號室外設(shè)備布置與碰撞檢測方法
      數(shù)據(jù)庫系統(tǒng)shell腳本應(yīng)用
      Unity3D中碰撞檢測問題的研究
      藍谷: “涉藍”新引擎
      快樂假期
      BIM技術(shù)下的某辦公樓項目管線碰撞檢測
      無形的引擎
      基于Cocos2d引擎的PuzzleGame開發(fā)
      宝鸡市| 平凉市| 灵丘县| 梅河口市| 忻州市| 资兴市| 任丘市| 昌都县| 赫章县| 定边县| 新沂市| 乳山市| 七台河市| 故城县| 和平县| 黑龙江省| 上高县| 黑山县| 邳州市| 东城区| 乌拉特中旗| 阆中市| 岱山县| 余江县| 庐江县| 建德市| 汤原县| 大洼县| 阿鲁科尔沁旗| 梅河口市| 镇远县| 田阳县| 休宁县| 海淀区| 渭南市| 惠州市| 淳安县| 江津市| 淮北市| 海原县| 瑞金市|