999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Unity3D的冒險游戲的設計與實現

2023-09-24 05:33:12楊淮敏邱樹偉
現代計算機 2023年13期
關鍵詞:動畫界面游戲

楊淮敏,邱樹偉

(韓山師范學院計算機與信息工程學院,潮州 521041)

0 引言

游戲是一種以娛樂態度解決問題的活動,被稱為第九藝術,好的游戲可以發人深省或讓玩家放松心情、提升智力。目前,國產優秀的單機游戲屈指可數,究其原因,除了市場因素之外,游戲開發技術的復雜性也影響了國產單機游戲的開發。

文獻[1]的研究指出,當下越來越多的游戲已經無法滿足廣大游戲愛好者的需求,玩家更傾向于玩法新穎、內存占用小、加載速度快的高品質游戲。游戲開發者必須快速高效地開發出成熟穩定的產品來滿足玩家的需求。為了實現這一目的,Unity3D 引擎是首選的開發工具。文獻[2]闡明Unity3D 是當前炙手可熱的游戲引擎,由其設計的游戲能夠在PC 端和手機端等多種平臺間相互移植,并且有很全面的幫助文檔和良好的用戶交互界面,可滿足開發者的需求。良好的可移植性與交互性使Unity3D 適合開發各類游戲。文獻[3]通過結合Unity3D 游戲引擎組件與腳本、怪物智能導航及AssetBundle 加載技術等設計了一款角色扮演游戲。該游戲提供了打怪、升級、抽獎、商城等多種玩法和相關功能。文獻[4]設計了一款冒險闖關游戲,通過集合不同的游戲類型使關卡難度層層遞進。文獻[5]通過結合碰撞體與剛體設計了對游戲人物進行基本操控的方法。文獻[6]設計了一個腳本語言與解釋器,實現了一系列的AI 及關卡邏輯功能。文獻[7]介紹了鍵盤交互技術與碰撞檢測技術,給出了游戲開發項目流程。

從以上成果可以看出,目前,在基于Unity3D的游戲設計與開發方面已取得一些成果。然而,上述成果還可以進一步完善,具體如下:①在系統設計方面,可以設計多個低耦合的子系統,使得游戲的功能更為完善與全面;②在系統實現方面,可以進一步完善戰斗系統、增加關卡系統以及裝備系統等,以改善游戲體驗。

本文旨在基于Unity3D 引擎技術,配合DOTween 插件和C#腳本語言,開發一套單機冒險游戲,實現游戲通用的基礎功能模塊,通過這些功能模塊展示一個游戲軟件的基本框架,主要功能模塊包括:游戲存檔、限制玩家游戲時間、選擇關卡、戰斗、商店、英雄信息展示等。通過該游戲的設計與實現,與廣大游戲開發者分享相關技術和方法,幫助開發者減少開發成本,簡化開發流程,使開發者能夠專注于設計自己獨有的游戲規則,實現具有特色的游戲功能。

1 基礎技術概述

1.1 Unity引擎

Unity 引擎具有極高的靈活性,開發者可以為多個平臺開發游戲,如IoS、安卓、Windows等。Unity 引擎還提供了諸多服務,如內容發布平臺,Unity Asset Store(UAS)等,其中,UAS的插件、素材、開發者社區、用戶手冊等都可以很好地幫助開發者開發游戲。此外,運行Unity腳本會按預定順序執行事件函數,在腳本的生命周期內事件函數的執行順序會對游戲效果產生影響。

1.2 DOTween插件

DOTween 插件是一個類型安全的免費開源面向對象動畫引擎,還有大量高級特性,將它導入Unity 中可以快速地完成許多動畫效果。這款插件可以使開發人員快速地進行各類動畫的設計和創作,能夠有效提升游戲開發的效率。DOTween 插件允許通過代碼以簡單的方式制作流暢美觀的動畫。使用DOTween 插件實現的動畫效果與補間動畫相似,它不僅可以用于UI上,還可以用于物體的移動等。

1.3 C#腳本語言

Unity腳本主要使用C#語言。C#是一個簡單的、通用的、面向對象的編程語言,能夠產生高效率的程序,可以在多種計算機平臺上編譯。C#的跨平臺特性可以解決Unity引擎的跨平臺支持問題。實際上,跨平臺的是C#編譯后所生成的中間語言(CIL)。

2 系統需求分析

由于本游戲是一款單機冒險游戲,因此,其功能模塊的實現比較重要,游戲功能結構如圖1所示。具體功能需求如下:

圖1 游戲功能結構

(1)游戲存檔:包含開始新游戲、繼續游戲和退出游戲。玩家無需注冊就可以進行游戲,開始新游戲時此前的游戲數據會消失,需要謹慎對待,因此會有再次確認的提示。

(2)限制游戲時間:限制游戲時間為1 小時/天,當剩余游戲時間為10分鐘時,計時器顏色會變為紅色以便提醒玩家,超出時間會彈出警告面板并且無法進行游戲。

(3)選擇關卡:包含解鎖關卡、更新通關星星數、解鎖章節。在一個章節中,關卡一默認解鎖,玩家通過關卡一后會自動解鎖關卡二,同時記錄關卡一獲得的星星數。如果關卡一未通關則不解鎖關卡二,當所有關卡滿星通關后會解鎖下一章節的關卡。

(4)商店功能:可以購買武器、英雄,購買成功與否均有反饋。玩家購買武器時成功與否都會有提示。購買英雄成功則會有動畫播放,動畫播放完后刷新商店,不允許再次購買該英雄。

(5)英雄展示:展示已購買的英雄信息,可以升級英雄并裝備武器,同時,可以選擇是否讓英雄加入戰斗隊列。玩家可以通過左右兩個按鈕切換想要查看信息的英雄,可以選擇英雄出戰或休戰。升級英雄需要金幣和經驗,點擊裝備槽可以展示裝備信息或者進行裝備,技能也可以升級。

(6)戰斗功能:設計英雄和敵人基類,實現敵人AI,可以切換英雄進行戰斗,同時設計遠程攻擊與普通攻擊的實現類,通關成功與否均有反饋。

3 流程分析

在玩家開始游戲時會首先進入登錄界面,玩家可以選擇繼續游戲(讀取之前保存的游戲數據)或開始新游戲,進入游戲后會開始計時,如果累計游戲時長到達一小時,會出現提示界面并無法繼續游戲,否則每過一分鐘都會更新一次游戲時長的數據并進行游戲時長的判斷。開始游戲流程如圖2所示。

圖2 開始游戲流程

在進入戰斗場景后,系統會檢測玩家是否按下了切換鍵,按下切換鍵就會使用隊列的下一個英雄進行戰斗,當前英雄死亡也會切換為下一個英雄繼續戰斗,如果英雄隊列中的英雄全部死亡則游戲失?。煌瑫r每次英雄受傷與攻擊都會播放相應動畫,每次英雄受傷時會判斷該英雄是否死亡;敵人如果受傷會播放受傷動畫并判斷是否死亡,如果死亡就播放敵人死亡動畫并判斷是否戰斗場景中的敵人全部死亡,如果全部死亡則游戲勝利;敵人會在游戲場景進行巡邏,如果英雄走到敵人的攻擊范圍,敵人會進行攻擊與追擊。戰斗流程如圖3所示。

圖3 戰斗流程

4 系統實現

本系統實現了游戲的關卡子系統、商店子系統、背包子系統、英雄信息展示子系統、戰斗子系統以及存儲子系統等,各子系統所采用的素材引用自文獻[8]。

4.1 關卡子系統的實現

本子系統實現的功能包括:跳轉場景、章節選擇、關卡選擇等。系統實現的主要功能如下:①跳轉場景:通過使用場景類SceneManagement 的LoadScene()方法獲取場景名進行跳轉。②章節選擇:運行時通過本地持久化類PlayerPrefs 獲取數據判斷章節是否解鎖,若解鎖則按鈕允許交互,實現界面如圖4所示。③關卡選擇:每次加載關卡選擇界面時通過獲取數據更新顯示當前關卡星星總數,上一關卡解鎖則下一關卡可以進行挑戰,其他關卡仍無法挑戰。讀取出戰英雄隊列,若為空則遮擋住關卡選擇界面使玩家無法進行挑戰,當關卡星星數等于總數時解鎖下一章,實現界面如圖5所示。

圖4 章節選擇界面

圖5 關卡選擇界面

4.2 商店子系統的實現

本子系統實現的功能包括:商店面板切換、英雄購買、購買成功動畫、武器購買等。系統實現的主要功能如下:①商店面板切換:通過使用Transform.SetSiblingIndex()方法改變面板在Hierarchy層次上的順序,從而實現面板的切換。②英雄購買:通過CanvasGroup 組件控制透明度,實現點擊購買按鈕時打開確認購買界面,通過讀取ScriptObject 保存的數據展示已設置好的英雄信息與人物圖,實現界面如圖6 所示。③購買成功動畫:通過使用DOTween 插件里的聯合動畫Sequence 的Append()方法實現UI動畫的設置,實現界面如圖7所示。

圖6 英雄購買界面

圖7 購買成功界面

4.3 背包子系統的實現

本子系統實現的功能包括:物品槽生成、物品槽更新和物品信息展示等功能,實現界面如圖8 所示。系統實現的主要功能如下:①物品槽生成:手動創建一個Prefab 預制體后,通過創建列表List 存儲實例化的預制體,從而實現多個物品槽的制作。②物品槽更新:打開背包界面時會對物品槽的信息進行更新,通過ScriptObject 獲取玩家存儲的物品數據,在物品槽中展示物品圖片與數量。③物品信息展示:點擊物品槽時顯示物品信息及出售按鈕,出售數量為1 時不許減少出售數量,未擁有物品數時不許增加。

圖8 背包系統界面

4.4 英雄信息展示子系統的實現

本子系統實現的功能包括:選擇更換出戰英雄、展示出戰英雄、升級英雄與武器、給英雄裝備武器等。系統實現的主要功能如下:①選擇更換出戰英雄:通過True 和False 設置英雄的出戰狀態,出戰隊列已滿時無法增加出戰英雄,通過英雄圖像下方的按鈕實現選擇英雄或者替換英雄后,出戰隊列的英雄頭像會進行更新,如圖9 所示。②升級英雄與武器:通過簡單的條件判斷實現英雄與裝備的升級,升級將會帶來屬性數值的提升。③給英雄裝備武器:給英雄裝備武器時需要從玩家背包查找多余的武器,裝備成功則背包武器少一件,同時武器屬性與角色職業掛鉤,如劍士不可裝備魔法書,實現界面如圖10所示。

圖9 英雄出戰界面

圖10 英雄裝備界面

4.5 戰斗子系統的實現

本子系統實現的功能包括:敵人AI、玩家角色控制、切換戰斗角色、普通攻擊與遠程攻擊、游戲勝利與失敗等。系統實現的主要功能如下:①敵人AI:在進入戰斗場景時初始化敵人的血條同時更新敵人信息,如果玩家切換了戰斗英雄,攻擊目標也會轉換為玩家當前使用的英雄。當英雄進入攻擊范圍時會進行攻擊并進行追擊,否則敵人會在兩點間進行巡邏。當敵人受傷時生命值減少,播放受傷動畫,死亡時播放死亡動畫并銷毀自身,如圖11 所示。②玩家角色控制:設置英雄可以進行二段跳、移動、下蹲、攻擊、起立等行為,同時使用射線檢測英雄的左右腳是否在地面上以判斷是否可以進行二段跳。③切換戰斗角色:按下F 鍵時可以切換英雄進行戰斗,此時會更新當前英雄信息,同時攝像機會跟隨當前英雄,血條信息和出戰英雄面板信息也會得到更新。④普通攻擊與遠程攻擊:根據英雄的職業分別設置普通攻擊和遠程攻擊。普通攻擊的原理是勾選碰撞體的isTrriger屬性,在碰撞敵人的時候觸發傷害。遠程攻擊創建了已設置好的預制體進行水平運動攻擊敵人,運動到一定距離即自我銷毀。⑤游戲勝利與失?。寒斖婕业乃杏⑿鄱急粨魯r會暫停游戲,顯示游戲失敗面板;玩家擊敗場景中的所有敵人時會暫停游戲,顯示游戲勝利面板,同時根據死亡英雄的數量來判斷以幾顆星通過本關卡,在勝利面板會顯示英雄信息,顯示通關獲得的經驗和金幣,如圖12所示。

圖11 戰斗界面

圖12 戰斗勝利界面

4.6 存儲子系統的實現

存儲子系統的實現主要采用PlayerPrefs。PlayerPrefs是一個用于數據本地持久化保存與讀取的類,它將數據以鍵值對的形式保存在本地,使用它能夠輕松實現數據存儲,在本系統中使用PlayerPrefs存儲了關卡星星數等。

由于ScrtptObject 的特性是在編輯模式或運行模式下修改的數據在游戲退出后不會保存,故開始新游戲只需要刪除已保存的PlayerPrefs鍵值對。繼續游戲相對復雜,在保存游戲數據時需要使用Json 將ScriptObject 序列化轉換為String 類型,再將String 類型保存在PlayerPrefs鍵值對中,讀取數據則需要讀取鍵值對的String,最后將其反序列化為ScriptObject。

5 結語

本文基于Unity 游戲引擎設計和實現了一款單機冒險游戲,該游戲無需設計復雜的算法,采用C#腳本語言實現,代碼只需要邏輯清晰即可實現。本游戲開發過程中注重提高代碼的復用性以及降低模塊間的耦合性,節省了開發成本。本文具體做了以下工作:

(1)在游戲實現方面,主要實現了關卡子系統、商店子系統、背包子系統、英雄信息展示子系統、戰斗子系統、存儲子系統等,完成了游戲的基礎功能模塊。

(2)在素材制作方面,通過綁定骨骼,制作了多個英雄的多個骨骼動畫,通過對英雄行為動畫進行精細的調整,實現了良好的動畫效果,同時使用序列幀制作了敵人的各種行為動畫。

(3)在界面設計方面,積極尋找優秀的界面設計提升審美,最終實現了良好的界面設計,同時還增加了部分UI動畫。

本游戲的設計和實現對于基于Unity 游戲引擎的單機版游戲開發具有積極的借鑒作用。

猜你喜歡
動畫界面游戲
做個動畫給你看
動畫發展史
國企黨委前置研究的“四個界面”
當代陜西(2020年13期)2020-08-24 08:22:02
我的動畫夢
文苑(2019年22期)2019-12-07 05:28:56
基于FANUC PICTURE的虛擬軸坐標顯示界面開發方法研究
人機交互界面發展趨勢研究
數獨游戲
瘋狂的游戲
飛碟探索(2016年11期)2016-11-14 19:34:47
爆笑游戲
我是動畫迷
學生天地(2016年9期)2016-05-17 05:45:06
主站蜘蛛池模板: 国产成人精品一区二区不卡| 黄色网页在线观看| 18禁不卡免费网站| 国产手机在线观看| 永久免费av网站可以直接看的 | 国产经典免费播放视频| 免费 国产 无码久久久| 国产丝袜啪啪| 国产精品男人的天堂| 国产精品99久久久久久董美香| 一本大道视频精品人妻| 欧美三级不卡在线观看视频| 性欧美精品xxxx| 91欧洲国产日韩在线人成| 欧美激情视频一区| 国产精品久久久久鬼色| 国产91特黄特色A级毛片| 久久国产乱子伦视频无卡顿| 在线国产毛片手机小视频| 中文天堂在线视频| www.亚洲天堂| 国产激情影院| 这里只有精品国产| 欧美日韩91| 亚洲精品国产首次亮相| 国产久草视频| 少妇精品网站| 精品亚洲麻豆1区2区3区| 少妇精品网站| 国产欧美精品午夜在线播放| 少妇精品网站| 成年A级毛片| 国产丝袜91| 91午夜福利在线观看精品| 国产本道久久一区二区三区| 亚洲一级毛片免费观看| 中文字幕人妻av一区二区| 久久综合成人| 无码aaa视频| 中文字幕亚洲专区第19页| 中文字幕 欧美日韩| 亚洲国产日韩一区| 国产精品极品美女自在线网站| 国产成人调教在线视频| 亚洲制服丝袜第一页| 国产美女主播一级成人毛片| 亚洲中文无码h在线观看| 国产精品久久久久鬼色| 五月天久久婷婷| 男女性色大片免费网站| 乱人伦视频中文字幕在线| av大片在线无码免费| 天天综合网站| 中文字幕在线一区二区在线| 国产区网址| 中文字幕在线一区二区在线| 极品国产一区二区三区| 国产精品部在线观看| 成人久久精品一区二区三区| 沈阳少妇高潮在线| 99偷拍视频精品一区二区| 亚洲最大情网站在线观看| 又粗又大又爽又紧免费视频| 综合色区亚洲熟妇在线| 亚洲系列无码专区偷窥无码| 国产乱人视频免费观看| 欧美激情,国产精品| 青青操视频在线| 久久国产拍爱| 亚洲人成色77777在线观看| 国产v精品成人免费视频71pao| 亚洲,国产,日韩,综合一区 | 亚洲人成高清| 国产成人综合在线视频| 91免费国产高清观看| 日韩a在线观看免费观看| 91小视频在线观看| 美女国内精品自产拍在线播放| 欧美亚洲一二三区| 国产男女免费视频| 亚洲中文字幕精品| 青草视频久久|