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

        ?

        基于Unity3D的移動(dòng)塔防游戲設(shè)計(jì)與實(shí)現(xiàn)

        2019-03-14 07:17:48胡杭
        現(xiàn)代計(jì)算機(jī) 2019年4期
        關(guān)鍵詞:關(guān)卡魔法導(dǎo)彈

        胡杭

        (溫州大學(xué)數(shù)理與電子信息工程學(xué)院,溫州 325035)

        0 引言

        近年來,隨著移動(dòng)設(shè)備的不斷發(fā)展,手機(jī)端游戲越來越受到大家的青睞。App Annie數(shù)據(jù)顯示,移動(dòng)游戲市場(chǎng)2018年在全球的規(guī)模達(dá)到了700億美元,增長(zhǎng)速度達(dá)到26%。

        Unity3D游戲引擎是一款全球領(lǐng)先的專業(yè)游戲開發(fā)引擎,在游戲開發(fā)領(lǐng)域占有著極大的比重,具有簡(jiǎn)單易上手、功能豐富等特點(diǎn)。Unity3D引擎中集成了大量的開發(fā)工具,利用這些工具可以大幅度縮短開發(fā)周期[1]。另外,Unity3D具有跨平臺(tái)開發(fā)的優(yōu)點(diǎn),開發(fā)人員只需要一次開發(fā),就可以將項(xiàng)目部署到多個(gè)平臺(tái),包括Windows、iOS和Android這些主流的平臺(tái),大大縮短了游戲開發(fā)周期[2]。

        塔防游戲作為一款經(jīng)典游戲,被許多玩家所喜愛。塔防游戲中面對(duì)敵軍的入侵,玩家可以建造一系列的防守道具來抵御入侵,最終取得游戲的勝利。目前游戲市場(chǎng)上有諸多塔防類游戲,例如植物大戰(zhàn)僵尸、皇家守衛(wèi)軍等。這幾款游戲在可玩性和策略性上占有著很大的優(yōu)勢(shì),也深受廣大玩家所喜愛。但由于許多這類游戲是基于2D平臺(tái)進(jìn)行開發(fā)的,因此在游戲畫質(zhì),游戲代入感方面并不是很出色。

        本文針對(duì)2D塔防游戲存在的一些局限性問題,使用3D引擎進(jìn)行設(shè)計(jì)和開發(fā)。在保證可玩性與策略性的基礎(chǔ)上,使用3D模型代替2D模型,增加視野控制功能,優(yōu)化游戲畫質(zhì),增強(qiáng)游戲的趣味性。

        1 游戲模塊設(shè)計(jì)

        塔防游戲功能模塊劃分如圖1所示。

        圖1 游戲總體模塊結(jié)構(gòu)圖

        加載模塊:加載模塊主要實(shí)現(xiàn)加載界面,游戲場(chǎng)景加載時(shí)的一個(gè)過渡效果,能夠顯示當(dāng)前場(chǎng)景的加載進(jìn)度,實(shí)現(xiàn)異步交互,提供給玩家一個(gè)反饋,能夠增強(qiáng)玩家的游戲體驗(yàn)。

        商城模塊:增加商城模塊可以增加游戲的策略性。商城用于購(gòu)買各種游戲道具,購(gòu)買道具需要一定量的鉆石,鉆石可從游戲中獲取,也可以通過充值操作進(jìn)行充值。購(gòu)買的道具可在游戲中進(jìn)行使用,不同的道具有不同的效果,對(duì)于游戲的局勢(shì)可以產(chǎn)生一定的影響。

        升級(jí)模塊:增加升級(jí)模塊是另一種增強(qiáng)游戲策略性的方式。升級(jí)模塊可以進(jìn)行各類炮塔的升級(jí),每種炮塔的升級(jí)都能對(duì)炮塔的屬性進(jìn)行一定的加持,玩家可以定制自己的升級(jí)策略。升級(jí)需要消耗一定數(shù)量的星星,星星的獲得是視游戲通關(guān)的情況而定,例如每次關(guān)卡完美通關(guān)可獲得3個(gè)星星。升級(jí)模塊可以促使玩家通過不斷提升關(guān)卡等級(jí)來解鎖新的升級(jí)策略。

        道具模塊:道具模塊主要用于商城購(gòu)買道具的施放。商城模塊主要注重購(gòu)買,而道具模塊注重道具施放。例如,萬箭齊發(fā)道具可以向指定區(qū)域發(fā)射大量弓箭,造成物理傷害;龍卷風(fēng)道具可以在指定區(qū)域形成龍卷風(fēng),造成范圍魔法傷害。

        魔法模塊:為了使游戲更具特色,增加了魔法模塊。例如,治療魔法可以恢復(fù)1點(diǎn)生命值;減速魔法可以使指定區(qū)域敵人行進(jìn)速度降低一段時(shí)間。魔法不消耗物品,但是具有冷卻時(shí)間,只有冷卻時(shí)間完成之后,魔法才可以使用。因此,如何有效地運(yùn)用魔法,需要從游戲整體策略上進(jìn)行規(guī)劃與設(shè)計(jì)。

        玩家進(jìn)入游戲主界面后,會(huì)呈現(xiàn)出已經(jīng)解鎖的關(guān)卡,玩家可以通過不斷地通關(guān)當(dāng)前關(guān)卡來解鎖下一個(gè)關(guān)卡。在關(guān)卡選擇界面,玩家可以進(jìn)入商城和升級(jí)模塊,商城模塊可以進(jìn)行道具的購(gòu)買,升級(jí)模塊可以指定相應(yīng)的升級(jí)策略。每一次戰(zhàn)斗都需要建立不同的炮塔防線來阻止敵軍的進(jìn)攻??梢酝ㄟ^加速按鈕加速游戲的進(jìn)程,通過暫停按鈕暫停游戲進(jìn)程。每當(dāng)戰(zhàn)斗勝利,便會(huì)得到一定的游戲獎(jiǎng)勵(lì)。

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

        2.1 Unity 3D游戲引擎

        Unity3D引擎具有諸多模塊,這里列舉了一些使用比較頻繁的功能模塊。

        后來,攝影家辦了展覽,她在圈中就小有名氣了。涂當(dāng)偶爾也給她拍幾張發(fā)在微博上,但一直是半紅不黑的,直到那天陳小北找到她。陳小北把她的照片放到了某知名網(wǎng)站上,并想方設(shè)法做成頭條新聞。一夜之間,她紅了,三炒兩炒,有一些名不見經(jīng)傳的牌子或網(wǎng)店找她代言。于是,街頭巷尾的婆婆媽媽也知道了,只除了她那個(gè)從不上網(wǎng)的爸爸葉之容。

        碰撞器模塊:碰撞器是游戲開發(fā)中至關(guān)重要的一個(gè)組件,它不斷檢測(cè)著物體之間的碰撞,并調(diào)用相應(yīng)的回調(diào)函數(shù)。開發(fā)者可以在Unity腳本中重寫這些回調(diào)函數(shù)來對(duì)碰撞做出相關(guān)的策略。碰撞的實(shí)質(zhì)其實(shí)是碰撞盒的碰撞。在Unity引擎中,為開發(fā)者提供了多種碰撞器,常見的有盒型碰撞器(Box Collider)、球型碰撞器(Sphere Collider)、膠囊型碰撞器(Capsule Collider)和網(wǎng)格碰撞器(Mesh Collider)[3]。其中,前三者可以處理模型較為簡(jiǎn)單的物體,碰撞器能夠較好地包裹在模型的周圍形成碰撞盒,這樣檢測(cè)碰撞而消耗的性能也會(huì)較小;但是對(duì)于一些比較復(fù)雜的模型或者對(duì)碰撞盒的精確度有著較高的要求的情況下,就可以使用網(wǎng)格碰撞器。

        Unity Shader:Unity 提供了許多內(nèi)置的 Shader,其中,Unity標(biāo)準(zhǔn)著色器(Standard Shader)集成了非常強(qiáng)大而全面的功能。我們可以通過設(shè)置十種常用的貼圖(反射率貼圖、法線貼圖等)來渲染模型;我們可以設(shè)置渲染模式為Opaque(不透明)、Cutout(鏤空)、Fade(隱現(xiàn))和Transparent(透明)來呈現(xiàn)不同的模型效果。另外,我們可以通過調(diào)節(jié)參數(shù)面板上的相關(guān)參數(shù)來改變模型的平滑度和金屬度。

        動(dòng)畫系統(tǒng):Unity的動(dòng)畫系統(tǒng)由以下幾部分構(gòu)成:Avatar(骨骼模型)、Animation(動(dòng)畫片段)、Animator(動(dòng)畫組件)、Animator Controller(動(dòng)畫控制器)。圖2為一個(gè)人形的骨骼模型,圖3為該模型的骨骼節(jié)點(diǎn)映射情況,Unity可以通過Avatar檢視面板來調(diào)節(jié)骨骼模型的各個(gè)節(jié)點(diǎn)的映射。骨骼動(dòng)畫不會(huì)改變對(duì)象的位置、旋轉(zhuǎn)和縮放等內(nèi)容,但會(huì)在幀間對(duì)其內(nèi)部組成進(jìn)行移動(dòng)或變形[4]。

        圖2 骨骼模型

        圖3 骨骼映射

        2.2 建立3D模型

        3D游戲開發(fā)過程中,3D建模是必不可少的步驟。玩家首先會(huì)通過模型去觀察整個(gè)游戲世界,進(jìn)而去體驗(yàn)游戲的其他內(nèi)容。優(yōu)秀的游戲模型能夠帶來游戲畫面的直觀感受,增加游戲的吸引力。諸如3Ds MAX、Maya、Rhino等軟件都能實(shí)現(xiàn)快速建模。通過采集模型,利用3Ds MAX軟件進(jìn)行模型細(xì)節(jié)調(diào)整,能過完成游戲開發(fā)的初期建模工作。

        2.3 實(shí)現(xiàn)與優(yōu)化

        MVC(Model-View-Controller)框架主要運(yùn)用于軟件的分層開發(fā),合理利用MVC框架能夠達(dá)到很好的解耦效果。MVC框架在軟件開發(fā)中能夠?qū)浖目煽啃?、?guī)范性和可擴(kuò)展性起到極大的促進(jìn)作用[5]。在游戲開發(fā)中,Model進(jìn)行游戲數(shù)據(jù)的讀出和寫入,View層進(jìn)行UI視圖層的控制,Controller層進(jìn)行游戲核心邏輯的控制,并且對(duì)Model層和View層起到了一定調(diào)控作用。

        如何平衡游戲畫質(zhì)和游戲性能兩個(gè)方面一直以來是本文研究的重點(diǎn)。本文總結(jié)了如下幾點(diǎn)優(yōu)化措施:

        (1)使用對(duì)象池實(shí)現(xiàn)對(duì)象的預(yù)加載以及回收。游戲?qū)ο笤趧?chuàng)建過程中需要消耗大量的資源,導(dǎo)致設(shè)備卡頓。使用對(duì)象池能夠?qū)τ螒驅(qū)ο筮M(jìn)行重復(fù)利用,減少資源的消耗,提高游戲性能。

        (2)在保證圖像質(zhì)量的前提下對(duì)圖像進(jìn)行壓縮,并減少冗余資源和重復(fù)資源。這樣做的好處是能夠減少安裝包的體積,降低內(nèi)存要求。

        (3)使用靜態(tài)貼圖烘焙代替動(dòng)態(tài)燈光效果。動(dòng)態(tài)燈光效果所消耗的性能非常巨大,一般適用于動(dòng)態(tài)的物體。對(duì)于靜態(tài)游戲資源,采用靜態(tài)貼圖烘焙能夠有效減少渲染所消耗的性能。

        (4)為常用的物體添加Tag或Layer,而不是每次都使用Find查找。在開發(fā)中經(jīng)常涉及到游戲?qū)ο蟮牟檎?,遍歷查找所消耗的CPU資源是比較多的,通過添加Tag或Layer的方式查找能夠減小CPU的壓力。

        2.4 導(dǎo)彈追蹤算法

        圖4 導(dǎo)彈追蹤示意圖

        如圖4所示,假設(shè)導(dǎo)彈的位置為(x1,y1,z1),目標(biāo)的位置為(x2,y2,z2),連接導(dǎo)彈和目標(biāo)的坐標(biāo),得到一條線段,線段和導(dǎo)彈初始發(fā)射方向所構(gòu)成的夾角a就是要旋轉(zhuǎn)的角度,即在導(dǎo)彈飛向目標(biāo)的過程中,角a不斷趨向于0。假設(shè)d為初始位置導(dǎo)彈和目標(biāo)的距離,s為飛行過程中某一時(shí)刻導(dǎo)彈和目標(biāo)的距離,a為線段和導(dǎo)彈初始發(fā)射方向所構(gòu)成的夾角,則某一時(shí)刻線段和導(dǎo)彈方向所構(gòu)成的夾角angle可以表示為s/d*a。因此,在導(dǎo)彈不斷飛行的過程中,角度逐漸的縮小,當(dāng)距離為0時(shí),導(dǎo)彈的正前方就是目標(biāo)。算法實(shí)現(xiàn)核心思想如下:

        (1)獲取目標(biāo)的位置坐標(biāo);

        (2)獲取導(dǎo)彈發(fā)射方向與目標(biāo)位置連線的夾角;

        (3)計(jì)算本幀內(nèi)導(dǎo)彈移動(dòng)的距離以及需要偏移的角度,并對(duì)導(dǎo)彈角度進(jìn)行調(diào)整;

        (4)循環(huán)步驟(3)直至導(dǎo)彈到達(dá)目標(biāo)位置。

        3 實(shí)驗(yàn)結(jié)果

        圖5為關(guān)卡模塊實(shí)現(xiàn)的效果圖,通過選擇不同的關(guān)卡來進(jìn)行挑戰(zhàn),并解鎖后續(xù)的關(guān)卡。關(guān)卡上的星星表示當(dāng)前關(guān)卡的評(píng)級(jí)。在該界面可以點(diǎn)擊商店按鈕進(jìn)入商店,點(diǎn)擊建造按鈕進(jìn)入升級(jí)界面。圖6為道具商店界面,可以根據(jù)自身的金幣購(gòu)買所需的道具,增強(qiáng)戰(zhàn)斗力。

        圖5 游戲關(guān)卡選擇界面

        圖6 道具商店界面

        圖7為游戲戰(zhàn)斗畫面,玩家可以通過建造不同的炮塔來防御敵人的入侵,殺死敵人能夠獲得金幣,金幣可用來建造升級(jí)炮塔。當(dāng)消滅所有的敵人時(shí),就獲得勝利,游戲勝利畫面如圖8所示。

        圖7 游戲戰(zhàn)斗畫面

        圖8 游戲勝利畫面

        4 結(jié)語(yǔ)

        本文介紹了一個(gè)移動(dòng)塔防游戲的設(shè)計(jì)和實(shí)現(xiàn)過程。本游戲使用3Ds MAX進(jìn)行游戲建模,使用碰撞系統(tǒng)來進(jìn)行碰撞檢測(cè),使用動(dòng)畫系統(tǒng)進(jìn)行動(dòng)畫控制,使用Unity Shader進(jìn)行渲染,使用MVC框架進(jìn)行更好地代碼維護(hù)。并且,運(yùn)用游戲優(yōu)化手段來平衡畫質(zhì)和性能,使用恰當(dāng)?shù)乃惴▉韺?shí)現(xiàn)游戲邏輯。本文對(duì)塔防3D游戲設(shè)計(jì)與實(shí)現(xiàn)進(jìn)行了詳盡的闡述,完成了3D休閑類游戲的設(shè)計(jì)與開發(fā)。

        猜你喜歡
        關(guān)卡魔法導(dǎo)彈
        海龜上岸
        松軟魔法
        東方少年(2022年28期)2022-11-23 07:10:06
        導(dǎo)彈燃料知多少
        軍事文摘(2020年14期)2020-12-17 06:27:16
        魔法筆
        神奇的魔法
        正在發(fā)射的岸艦導(dǎo)彈
        攔截那枚導(dǎo)彈
        我的魔法棒
        導(dǎo)彈轉(zhuǎn)運(yùn)
        2015年高考江蘇省物理卷一道題的3種解法
        中文字幕久久精品波多野结百度| 日韩精品一区二区三区中文| 国产伦精品一区二区三区免费| 久久99国产伦精品免费| 久久国产劲爆内射日本| 亚洲97成人在线视频| 热久久国产欧美一区二区精品| 日韩精品一区二区三区在线观看 | 中文字幕午夜AV福利片| 国产精品综合女同人妖| 在线播放真实国产乱子伦| 精品香蕉久久久爽爽| 黑人巨大av在线播放无码| 国产精品久久无码不卡黑寡妇| 99精品又硬又爽又粗少妇毛片| 国偷自拍av一区二区三区| 五月综合缴情婷婷六月| 真实国产乱视频国语| 免费国产自拍视频在线观看| 日本一区二区三区视频网站| 中文字幕一区二区三区日韩精品| 国产97色在线 | 免| 少妇呻吟一区二区三区| 岳丰满多毛的大隂户| 最近中文字幕视频高清| 中国免费一级毛片| 日本最新一区二区三区在线| 公与淑婷厨房猛烈进出| 国产高潮国产高潮久久久| 伊在人亚洲香蕉精品区麻豆 | 美女露出自己的性感大胸一尤内衣 | 麻豆AV无码久久精品蜜桃久久 | 亚洲成片在线看一区二区| 亚洲天堂av中文字幕在线观看| 亚洲日韩av无码| 日本一区午夜艳熟免费| 激情综合网缴情五月天| 国产偷国产偷亚洲综合av| 羞羞视频在线观看| 精品综合久久久久久8888| 麻豆精品在线视频观看|