• 
    

    
    

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

      基于Unity3D的ARPG游戲設(shè)計(jì)與實(shí)現(xiàn)

      2020-12-01 03:17:10王艷華唯辰
      電腦知識(shí)與技術(shù) 2020年29期
      關(guān)鍵詞:碰撞檢測(cè)游戲

      王艷 華唯辰

      摘要:目前人們生活節(jié)奏快碎片化時(shí)間多,多數(shù)人更愿意利用碎片化時(shí)間玩一些不易沉迷的游戲。為了迎合現(xiàn)代人對(duì)游戲的需求,旨在開發(fā)一款不易讓人沉迷、鍛煉玩家快速反應(yīng)能力的三維ARPG類游戲。基于Unity3D游戲開發(fā)技術(shù)在Visu-aIStudi02019平臺(tái)、使用C#開發(fā)語(yǔ)言設(shè)計(jì)并實(shí)現(xiàn)了這款名為劍圣的三維ARPG游戲。首先分析選題背景,然后描述游戲開發(fā)的目的、玩法以及包含的功能模塊,接著詳細(xì)闡述游戲中關(guān)鍵技術(shù)的開發(fā)思路,最后展示了游戲的實(shí)現(xiàn)效果圖。

      關(guān)鍵詞:Unity3D;ARPC;游戲;碰撞檢測(cè);人物交互

      中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A

      文章編號(hào):1009-3044(2020)29-0199-03

      1 概述

      ARPG( Action Role-playing Game)即動(dòng)作類角色扮演游戲,有很大一部分是單機(jī)游戲。在這類游戲中,用戶控制某個(gè)角色并執(zhí)行相應(yīng)的動(dòng)作(尤其是攻擊動(dòng)作)在特定環(huán)境中活動(dòng),AR-PC融合了動(dòng)作游戲和傳統(tǒng)RPG游戲的元素,將激烈的打斗場(chǎng)面融人其中,大大加快了游戲的節(jié)奏感和緊張感,更加容易調(diào)動(dòng)用戶的參與感,它增強(qiáng)了RPG游戲的交互性和動(dòng)作感[1],也使得ARPG類游戲在中國(guó)受到越來(lái)越多人喜歡。

      Unity3D作為目前主流的3D游戲開發(fā)引擎,集圖形、音頻、物理和網(wǎng)絡(luò)等多功能為一體[2j,可以編輯地形、搭建3D場(chǎng)景、并通過(guò)腳本編寫對(duì)角色進(jìn)行控制,尤其他強(qiáng)大的物理引擎還能模擬出更加逼真的場(chǎng)景,使游戲更加真實(shí)[3]。所以本文基于Uni-ty3D技術(shù)和Visual Studi02019平臺(tái)、使用C#語(yǔ)言開發(fā)一款A(yù)R-PG游戲系統(tǒng)。

      當(dāng)今社會(huì)發(fā)展飛速,人們生活節(jié)奏快碎片化時(shí)間比較多,多數(shù)人更愿意選擇玩一些簡(jiǎn)單易操作又不易沉迷的游戲來(lái)休息與放松,所以本文開發(fā)的是一款只有刀光劍影、沒(méi)有讓人沉迷的故事情節(jié)、旨在鍛煉玩家快速反應(yīng)能力的ARPG類游戲。

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

      2.1 游戲開發(fā)目的

      本游戲旨在實(shí)現(xiàn)一個(gè)3D的ARPG單機(jī)闖關(guān)游戲。本游戲中人人都是劍圣,沒(méi)有花里胡哨的法術(shù),也沒(méi)有一招必勝的絕招,有的只是以刀劍去會(huì)武林各路高手的豪邁、勇猛,主要考驗(yàn)玩家在極短時(shí)間內(nèi)做出反應(yīng)操作的能力,可以鍛煉玩家的快速反應(yīng)能力。

      2.2 游戲玩法

      本游戲共有2種角色:劍客和敵人,共4個(gè)關(guān)卡。玩家在進(jìn)入游戲后,可以選擇“開始新游戲”“繼續(xù)游戲”和“退出游戲”。如果是新游戲,先是挑戰(zhàn)一個(gè)教學(xué)關(guān)卡,成功后繼續(xù)挑戰(zhàn)剩下三個(gè)打斗關(guān)卡;如果是繼續(xù)游戲,則繼續(xù)使用上一次游戲退出時(shí)劍客的屬性,比如體力值、攻擊力等,跳過(guò)教學(xué)關(guān)卡,直接挑戰(zhàn)三個(gè)打斗關(guān)卡。所有角色只有體力值沒(méi)有生命值,角色一旦受到傷害只會(huì)削減體力值,劍客體力值為零則挑戰(zhàn)失敗,以武會(huì)友不傷性命。敵人被擊敗后會(huì)掉落增加劍客技能和攻擊力的寶物。

      2.3 游戲功能模塊設(shè)計(jì)

      本游戲包括三個(gè)功能模塊:場(chǎng)景設(shè)計(jì)模塊、人物功能模塊、游戲功能模塊,如圖1所示。

      1)場(chǎng)景模塊包括了場(chǎng)景環(huán)境的搭建以及界面UI的顯示,本游戲系統(tǒng)設(shè)計(jì)了四個(gè)場(chǎng)景:教學(xué)場(chǎng)景和三個(gè)打斗場(chǎng)景,和六個(gè)界面:開始界面、設(shè)置界面、劍客信息界面、勝利界面、失敗界面、通關(guān)界面。

      2)人物功能模塊包括對(duì)劍客和敵人的控制功能模塊。

      劍客:劍客由玩家操控,在體力值大于0時(shí),可以前后左右移動(dòng);在防御時(shí),可以通過(guò)翻滾、格擋進(jìn)行閃避,當(dāng)劍客進(jìn)行格擋時(shí),敵人的普通攻擊不會(huì)對(duì)其造成傷害,并且格擋在特定情況下會(huì)對(duì)敵人彈反,彈反成功會(huì)對(duì)敵人造成硬直;劍客在攻擊時(shí),在精力值不為0時(shí),可進(jìn)行普通攻擊、連擊和技能攻擊;劍客受到傷害時(shí)會(huì)硬直,體力值會(huì)減少,當(dāng)體力值變?yōu)?時(shí),玩家挑戰(zhàn)失敗,游戲重新開始。

      敵人:本游戲包含3種敵人:小怪、精英怪物和boss,具有追逐、自動(dòng)躲避障礙、防御、進(jìn)攻和反擊等邏輯,敵人對(duì)劍客進(jìn)行攻擊,其中精英怪物和Boss能夠?qū)偷倪B續(xù)攻擊和技能攻擊進(jìn)行格擋,如果敵人一直被劍客攻擊會(huì)有一定概率的反擊操作,如果劍客一直格擋敵人會(huì)看破。

      3)游戲功能模塊是本游戲系統(tǒng)的主體部分,包括音效管理、公共方法封裝、流程控制、點(diǎn)擊事件、傳送邏輯、底層數(shù)據(jù)管理,該模塊采用MVC框架進(jìn)行設(shè)計(jì)[4]。

      3 游戲關(guān)鍵技術(shù)

      3.1 場(chǎng)景實(shí)現(xiàn)

      由于場(chǎng)景建模不是本系統(tǒng)的重點(diǎn)內(nèi)容,所以場(chǎng)景中的地圖環(huán)境素材來(lái)源于網(wǎng)上的開源素材,導(dǎo)人到Unity3D項(xiàng)目的Assert文件夾中,將基本的素材(石頭、青苔、樹木、葉子、木板等)組合成一個(gè)prefab預(yù)制體(山體、樹木、房屋),在場(chǎng)景中添加物體以及人物,并為場(chǎng)景中的物體、人物加載碰撞器( BoxColider)組件和剛體(RigidBody)組件,方便后續(xù)實(shí)現(xiàn)重力、碰撞等物理效果,最后烘焙場(chǎng)景光源和可到達(dá)區(qū)域[5]。

      3.2 人物碰撞檢測(cè)

      本游戲系統(tǒng)主要涉及劍客與敵人間的攻擊,為了呈現(xiàn)攻擊碰撞時(shí)的真實(shí)性和準(zhǔn)確性,需要為劍客和敵人設(shè)置碰撞檢測(cè)。本系統(tǒng)采用Unity提供的BoxColider碰撞器組件、觸發(fā)器進(jìn)行碰撞檢測(cè)[6]。

      3.2.1劍客的攻擊碰撞檢測(cè)

      劍客的攻擊碰撞檢測(cè),是將BoxColider組件和PlayerSward-Attack腳本掛載到劍客人物模型的右手的劍上,并勾選Is Trig-ger屬性[7-8]。當(dāng)劍碰撞器接觸到敵人軀體碰撞器時(shí),物理上看劍會(huì)穿過(guò)敵人,在PlayerSwardAttack腳本中進(jìn)入OnTriggerEnter方法,首先實(shí)例化劍客的攻擊特效,并設(shè)置一個(gè)攻擊參數(shù)is—CanAttack,判斷玩家操控劍客時(shí)是否按下攻擊鍵(即劍客是否正在攻擊),如果沒(méi)在攻擊,比如人物移動(dòng)時(shí)劍只是碰到敵人并沒(méi)有攻擊敵人,則直接退出方法,物理上沒(méi)有任何效果,如果正在攻擊,敵人則受到傷害,播放受傷動(dòng)畫并減少血量,同時(shí)獲取敵人,將敵人掛載的enemySwardAttack腳本中的攻擊參數(shù)設(shè)置為false,這樣可以保證敵人在被攻擊時(shí)自身的攻擊碰撞器失效,避免攻擊邏輯上的混亂。

      3.2.2 敵人的攻擊碰撞檢測(cè)

      敵人攻擊碰撞器的實(shí)現(xiàn)原理與劍客攻擊碰撞器的相同,只是組件和腳本被掛載到了一個(gè)透明的、立方體形狀的游戲物體上,如圖2所示,若劍客在這個(gè)碰撞器范圍內(nèi),敵人便隔一定時(shí)間調(diào)用攻擊方法,若不在碰撞器范圍內(nèi),敵人根據(jù)距離來(lái)判斷是否追蹤劍客。

      在敵人攻擊劍客時(shí),激活其攻擊碰撞器,并實(shí)例化劍客被攻擊的特效,重置攻擊時(shí)間間隔attackTimer。因?yàn)閯鸵恢痹诠襞鲎财鞣秶鷥?nèi),所以先設(shè)置碰撞器關(guān)閉,當(dāng)攻擊間隔at-tackTimer到時(shí)才激活碰撞器對(duì)劍客進(jìn)行攻擊,這樣不會(huì)一直對(duì)劍客造成傷害.實(shí)現(xiàn)敵人的間隔攻擊。

      3.2.3 敵人和劍客的軀體碰撞檢測(cè)

      在劍客和敵人的軀體模型上掛載BoxColider碰撞器組件,但均不勾選IsTrigger這個(gè)觸發(fā)器屬性,在游戲中稱為“碰撞體積”,不勾選觸發(fā)器屬性的效果就如同現(xiàn)實(shí)生活中兩個(gè)人面對(duì)面移動(dòng)不可能直接穿過(guò)去而是會(huì)撞在一起一樣,在游戲中劍客同樣不能從一堆敵人中穿過(guò)去,而是會(huì)被包圍。

      3.3 人物間交互

      在Unity3D中,實(shí)現(xiàn)虛擬交互的方式是編寫能夠?qū)崿F(xiàn)交互功能的腳本,并將相應(yīng)腳本掛載到相應(yīng)的3D物體上。本游戲系統(tǒng)關(guān)鍵交互技術(shù)為:敵人智能追蹤、劍客彈反和劍客連擊。

      3.3.1敵人智能追蹤

      敵人智能追蹤是使用Navigation導(dǎo)航系統(tǒng)實(shí)現(xiàn)的[9],在Nav-igation系統(tǒng)中先烘焙地圖上的導(dǎo)航網(wǎng)格確定哪些地方是可達(dá)到的(Walkable),再使用NavMeshAgent組件控制角色的移動(dòng)。敵人具有轉(zhuǎn)身速度、仇恨距離、攻擊距離、攻擊間隔等屬性,在敵人這個(gè)G ameObject上掛載的EnemyController腳本中實(shí)例化導(dǎo)航系統(tǒng),在Awake方法中調(diào)用NavMeshAgent里的API獲取劍客的實(shí)時(shí)位置坐標(biāo),并得出劍客與敵人的距離,若該距離在敵人的仇恨距離內(nèi)追擊玩家,當(dāng)進(jìn)入攻擊距離后開始根據(jù)攻擊間隔攻擊玩家。

      3.3.2 劍客彈反

      敵人攻擊的同時(shí)若玩家能在指定之間內(nèi)按下空格鍵便可進(jìn)行彈反。在敵人的碰撞器腳本中,當(dāng)敵人進(jìn)行攻擊時(shí),將彈反機(jī)會(huì)參數(shù)isCanOpenPlayProtect設(shè)置為true,進(jìn)入彈反判斷,計(jì)算玩家按下空格鍵的反應(yīng)時(shí)間,設(shè)置控制玩家彈反的判定時(shí)間(例如1s),此時(shí)考驗(yàn)和鍛煉玩家反應(yīng)速度的時(shí)候到了,當(dāng)玩家反應(yīng)時(shí)間大于判定時(shí)間時(shí)則彈反失敗,劍客受到傷害;若玩家反應(yīng)時(shí)間小于判定時(shí)間則彈反成功,效果如圖3所示,調(diào)用Tools單例中取消敵人傷害的方法,并實(shí)例化彈反的特效,播放彈刀的音效,并重置敵人的攻擊時(shí)間,播放敵人受傷動(dòng)畫,即敵人產(chǎn)生硬直,效果如圖4。

      3.3.3 劍客連擊

      劍客攻擊時(shí)會(huì)消耗精力值,在調(diào)用攻擊方法前,先判斷劍客當(dāng)前的精力值是否大于攻擊消耗的精力,若大于則調(diào)用攻擊方法、播放攻擊動(dòng)畫、AudioController設(shè)置攻擊音效,并進(jìn)行是否連擊的判斷。若玩家本次與上一次的攻擊間隔小于系統(tǒng)設(shè)定的攻擊間隔attackTimer則認(rèn)為是連擊,再根據(jù)連擊次數(shù)thi-sAttacklndex獲取連擊進(jìn)度,再依據(jù)連擊進(jìn)度播放不同的攻擊動(dòng)畫和音效。

      4 游戲?qū)崿F(xiàn)

      部分游戲?qū)崿F(xiàn)效果,如圖5所示。

      5 結(jié)語(yǔ)

      本文基于Unity3D技術(shù)和VisualStudi02019平臺(tái)、使用C#開發(fā)語(yǔ)言設(shè)計(jì)并實(shí)現(xiàn)了這款A(yù)RPG游戲。游戲只有劍客與敵人間的對(duì)戰(zhàn),不易讓人沉迷其中,尤其是彈反系統(tǒng)的設(shè)計(jì),更好的考驗(yàn)、鍛煉了玩家的反應(yīng)能力,但游戲場(chǎng)景不夠華麗、界面也不夠美觀,在這個(gè)方面還有很大提升空間。

      參考文獻(xiàn):

      [1]鄧增強(qiáng),基于Unity3D的輕量級(jí)ARPG手機(jī)游戲系統(tǒng)研究與應(yīng)用[D].廣州:廣東工業(yè)大學(xué),2017.

      [2]尹大偉,張熙若,李歡歡,等,基于Unity3D的虛擬校園漫游系統(tǒng)及其關(guān)鍵技術(shù)研究[J].軟件工程,2019,22(9):17-19.

      [3]朱晴.Unity3D開發(fā)工具在3D游戲開發(fā)中的應(yīng)用[Jl,電子技術(shù)與軟件工程,2019(22):58-59.

      [4]馬春江,張明禎.Unity3d游戲開發(fā)中的面向組件思想和MVC框架[J].信息與電腦,2017(18):70-72.

      [5]張策.基于Unity3D的三維游戲場(chǎng)景設(shè)計(jì)與實(shí)踐[D].合肥:合肥工業(yè)大學(xué),2016.

      [6]俞磊,韓春香.基于Unity3D和3DSMax的虛擬醫(yī)院漫游系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].長(zhǎng)春大學(xué)學(xué)報(bào),2020,30(4):40-44.

      [7]朱喜基,馮振輝,基于Unity3D虛擬校園漫游碰撞檢測(cè)的研究[J].江蘇科技信息,2018(11):66-68.

      [8]武桐,王曉雨.Unity3D中碰撞檢測(cè)問(wèn)題的研究[J].電子測(cè)試,2018(1):83-84.

      [9]袁科,高啟文,閆永航.基于Unidy3D的角色扮演游戲設(shè)計(jì)與實(shí)現(xiàn)[J].軟件導(dǎo)刊,2019。18(8):75-79.

      【通聯(lián)編輯:梁書】

      作者簡(jiǎn)介:王艷(1985-),江蘇徐州人,研究生,助理實(shí)驗(yàn)師,研究方向:軟件工程;華唯辰(1997-),江蘇蘇州人,本科。

      猜你喜歡
      碰撞檢測(cè)游戲
      全新預(yù)測(cè)碰撞檢測(cè)系統(tǒng)
      基于BIM的鐵路信號(hào)室外設(shè)備布置與碰撞檢測(cè)方法
      Unity3D中碰撞檢測(cè)問(wèn)題的研究
      游戲
      數(shù)獨(dú)游戲
      瘋狂的游戲
      飛碟探索(2016年11期)2016-11-14 19:34:47
      空間遙操作預(yù)測(cè)仿真快速圖形碰撞檢測(cè)算法
      爆笑游戲
      BIM技術(shù)下的某辦公樓項(xiàng)目管線碰撞檢測(cè)
      第八章直接逃出游戲
      棋牌| 洱源县| 稷山县| 兖州市| 海盐县| 邵阳市| 凌源市| 洪雅县| 昌乐县| 庆城县| 峡江县| 泰顺县| 奇台县| 洞口县| 虎林市| 临江市| 宁乡县| 北辰区| 新乐市| 蓬莱市| 北碚区| 祁门县| 建瓯市| 迁安市| 东宁县| 昆山市| 金山区| 福建省| 广丰县| 常熟市| 邹城市| 二连浩特市| 金昌市| 黄浦区| 湖州市| 晋城| 旺苍县| 祁门县| 隆昌县| 宜君县| 安多县|