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

基于Unity3D的漢字跳一跳算法設(shè)計(jì)與實(shí)現(xiàn)

2022-07-06 05:17:50張佳豪許向榮李光印
現(xiàn)代信息科技 2022年6期
關(guān)鍵詞:游戲

張佳豪?許向榮?李光印

摘? 要:一個(gè)國(guó)家的文化傳承很大程度上是基于這一國(guó)家所特有的文字。漢字是中華文化最博大精深的部分之一,更是中國(guó)文化傳承最依賴的方法之一,漢字對(duì)于我國(guó)文化的重要性不言而喻。而當(dāng)下人們對(duì)各種創(chuàng)新想法抱著接受的態(tài)度的背景下,創(chuàng)新出一款能夠使得孩童們?cè)鲞M(jìn)對(duì)于中華文化的認(rèn)同感與歸屬感的游戲逐漸有了市場(chǎng)。這一游戲在推動(dòng)中國(guó)文化的傳播方面做出自己的貢獻(xiàn)。在現(xiàn)有的游戲設(shè)計(jì)軟件中,Unity3D軟件是極為優(yōu)秀的游戲創(chuàng)建軟件。

關(guān)鍵詞:漢字;中華文化;Unity3D;游戲

中圖分類號(hào):TP311? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):2096-4706(2022)06-0024-04

Design and Implementation of Chinese Character Hopping Algorithm Based on Unity3D

ZHANG Jiahao, XU Xiangrong, LI Guangyin

(School of Information Engineering, Zhengzhou University of Science and Technology, Zhengzhou? 450064, China)

Abstract: The cultural inheritance of a country is largely based on its unique script. Chinese characters are not only one of the most profound parts of Chinese culture, but also one of the most dependent methods for Chinese cultural inheritance. The importance of Chinese characters for Chinese culture is self-evident. In the current era, under the background of people accept all kinds of innovative ideas, there is a market for a game that can help children enhance their sense of identity and belonging to Chinese culture. The game makes its own contribution to promoting the spread of Chinese culture. Among the existing game design software, Unity3D is an excellent game creation software.

Keywords: Chinese character; Chinese culture; Unity3D; game

0? 引? 言

隨著時(shí)代的前進(jìn)、科技的不斷發(fā)展,新的科學(xué)理念也在這一歷史車輪下不斷涌現(xiàn),技術(shù)也在時(shí)代進(jìn)步中不斷更新?lián)Q代,新的概念也被人們不斷提出,新的體系改革也隨著而來。新時(shí)代的技術(shù)發(fā)展帶來的是新的機(jī)遇和新的挑戰(zhàn),許多領(lǐng)域的結(jié)構(gòu)體系因此發(fā)生了巨大改變。近年來隨著計(jì)算機(jī)物理硬件的提升以及社會(huì)經(jīng)濟(jì)的進(jìn)步,游戲技術(shù)也得到了空前的發(fā)展[1]。Unity3D這一游戲創(chuàng)作平臺(tái)在游戲創(chuàng)作領(lǐng)域占據(jù)著不可或缺的地位,也是現(xiàn)有創(chuàng)作領(lǐng)域內(nèi)最為常見的游戲創(chuàng)作軟件。目前國(guó)內(nèi)外許多專家在Unity平臺(tái)研發(fā)了多種游戲[2],如伍傳敏等人基于Unity3D完成了第一人稱射擊游戲的設(shè)計(jì)與開發(fā)[3];張典華等人基于Unity3D實(shí)現(xiàn)了多平臺(tái)兼容的三維空戰(zhàn)游戲[4];劉晉鋼等人則研究了Unity3D與Kinect整合數(shù)據(jù)技術(shù)在體感游戲中的應(yīng)用價(jià)值[5]。

目前市面上的游戲的設(shè)計(jì)針對(duì)對(duì)象并不是為兒童,主要是瞄向青少年這一年齡段并對(duì)此進(jìn)行游戲設(shè)計(jì),因此對(duì)于專用于兒童方面的游戲是極少出現(xiàn)的,現(xiàn)有市場(chǎng)上的游戲缺乏對(duì)兒童學(xué)習(xí)認(rèn)知的提升,尤其是在教育方面。因此通過以上調(diào)查,得出可以通過對(duì)微信跳一跳這一小程序的創(chuàng)新來設(shè)計(jì)新穎且具有一定教育能力的新游戲是具有一定的市場(chǎng)的,也能使得幼兒孩童對(duì)于學(xué)習(xí)這一行為充滿興趣。希望在未來,這一游戲能夠在教育新興行業(yè)中占據(jù)一定的位置,補(bǔ)足可能存在于孩童學(xué)前教育階段的一部分空缺,并使得孩童能夠認(rèn)知漢字并不斷學(xué)習(xí),對(duì)漢字有更大的興趣。

1? 概要

本文主要以Unity3D引擎為游戲開發(fā)平臺(tái),C#等程序語(yǔ)言為基礎(chǔ)設(shè)計(jì)出一款關(guān)于漢字的跳一跳游戲,主要闡述程序中的一些重要的關(guān)鍵算法與思路,以漢字為游戲的主要特征元素并以跳一跳類型游戲,通過按照給出的音頻、拼音等提示判斷正確的條約方向,當(dāng)棋子從正確的方向跳躍到正確的區(qū)塊上時(shí),這便是一次成功過關(guān),達(dá)到設(shè)定的通關(guān)條件時(shí)即為成功通關(guān)。

2? 案例的關(guān)鍵算法與思路

游戲在創(chuàng)立的初期是需要確立起游戲整體的構(gòu)架以及預(yù)想設(shè)定的大致結(jié)構(gòu),然后通過對(duì)預(yù)想設(shè)定剖析分解成不同的情況,并按照預(yù)想情況來分別解決未來可能遇到問題與困難,建立的總體架構(gòu)如圖1所示。

2.1? 如何使用漢字元素

漢字元素是漢字跳一跳游戲的顯著游戲元素特征,對(duì)于漢字元素的應(yīng)用也是貫穿整個(gè)游戲,如漢字文字顯示與漢字文字音頻等方面,對(duì)于文字音頻的引用、文字顯示以及隨機(jī)拼音生成都是整個(gè)漢字跳一跳游戲的漢字元素的展現(xiàn),如圖2所示。對(duì)于在跳一跳程序中使用漢字元素主要用于各種過關(guān)的提示以及對(duì)孩童的教育,使得孩子能夠明白漢字的意義,這些目的的實(shí)現(xiàn)則是要基于漢字的隨機(jī)生成與應(yīng)用,而隨機(jī)生成整體設(shè)計(jì)思路是實(shí)現(xiàn)這一目的最主要的程序設(shè)計(jì),在整個(gè)文字范圍中按照數(shù)組排列在其中隨機(jī)出一個(gè)數(shù)組,將其中的漢字音頻元素提出使用,并使用do-while循環(huán)來預(yù)防重復(fù)出現(xiàn)同一元素,避免出現(xiàn)相同的漢字元素以干擾游戲體驗(yàn)。81A203D7-76DF-4C5D-9311-955E3A045C57

2.2? 如何建立游戲檢測(cè)判定機(jī)制

游戲的檢測(cè)機(jī)制是游戲能否正常運(yùn)行的關(guān)鍵,也是整個(gè)游戲?qū)τ螒蜻x擇行為的判斷,并對(duì)不同的判斷顯示不同的反應(yīng)。對(duì)于漢字跳一跳這一游戲來說主要需要判定以下進(jìn)入漢字時(shí)、待在漢字時(shí)、退出漢字時(shí)以及保持進(jìn)入的方向這幾種情況,在對(duì)不同的情況時(shí)分別建立不同的檢測(cè)判定機(jī)制來判斷接下來將使用怎樣的判定或輸出怎樣的結(jié)果,因此整個(gè)判定機(jī)制使用OnTriggerEnter來作為觸發(fā)機(jī)制。當(dāng)進(jìn)入漢字時(shí),首先判斷棋子是否落在地面上,若是落在地面上即無法過關(guān)并重新再來;若是落在正確的區(qū)塊上觸發(fā)刪除錯(cuò)字以及區(qū)塊并加分的判定,但在跳躍過程中觸發(fā)判定棋子是處于鎖死的狀態(tài)不接受任何操作,防止棋子跳躍未完成,但又重新開始跳躍;若是落在錯(cuò)誤的區(qū)塊上觸發(fā)判斷提示跳躍方向錯(cuò)誤,然后重置位置。當(dāng)退出漢字時(shí)即棋子離開漢字區(qū)塊時(shí),鎖定棋子的移動(dòng)跳躍,防止在跳躍過程中的再次移動(dòng),在跳躍時(shí)限制跳躍次數(shù),只能夠跳躍一次。當(dāng)待在漢字時(shí),需要判斷是否在正確的區(qū)塊內(nèi),若是在錯(cuò)誤的區(qū)塊內(nèi),則在提示完畢后再對(duì)棋子的位置進(jìn)行重置;若是在正確的區(qū)塊內(nèi),則判斷接下來棋子跳躍方向以及跳躍遠(yuǎn)近。如圖3、圖4所示。

2.3? 如何實(shí)現(xiàn)棋子跳躍以及跳躍距離

在最開始的跳一跳程序中,棋子跳躍的距離的判定就是整個(gè)游戲一大特征以及最為核心的程序,也是跳一跳這個(gè)程序的有趣之處,在整個(gè)游戲中棋子跳躍以及跳躍的距離是依據(jù)設(shè)定的施加力以及施加力的大小來決定的,其中要實(shí)現(xiàn)跳躍的定義以及施加力大小的定義,如圖5所示。其中實(shí)現(xiàn)跳躍是依據(jù)代碼進(jìn)行定義,定義棋子接受施加力后以某一跳躍方式實(shí)現(xiàn),而對(duì)于跳躍的距離的判斷則是依據(jù)一定的算法,依據(jù)時(shí)間鐘timer來對(duì)跳躍的時(shí)間進(jìn)行記錄,定義跳躍的力以及跳躍的距離,如圖6所示。

2.4? 如何自動(dòng)生成與消除障礙

Unity3D游戲引擎能夠快速開發(fā),并具有高的擴(kuò)展性,其腳本不僅支持JavaScript,還能夠支持C#,還支持C編寫的DLL插件,可以提高代碼的重復(fù)使用率。在漢字跳一跳中棋子在設(shè)想中是以跳躍到障礙上來作為玩家是否確認(rèn)自己的選擇,因此在游戲中會(huì)涉及許多障礙的創(chuàng)立以及刪除,若是將障礙一個(gè)個(gè)單獨(dú)設(shè)計(jì)并保存會(huì)將游戲占用空間過大以及很多的問題。在上述情況下,根據(jù)預(yù)想需求的自動(dòng)生成與銷毀障礙的程序代碼便因此而被設(shè)計(jì)出來。在整個(gè)代碼程序中障礙的生成、消除等功能以及障礙的材質(zhì)選擇是依據(jù)代碼設(shè)定隨機(jī)生成,使得游戲中的障礙可以依據(jù)游戲進(jìn)度無限生成并減少原本需要設(shè)計(jì)的內(nèi)容物體。按照設(shè)計(jì)思路來說,根據(jù)攝像頭的位置設(shè)定來顯示棋子的跳躍,但棋子跳躍方向選擇是依據(jù)三維坐標(biāo)軸中X軸、Y軸進(jìn)行生成與確定,之后再將資源庫(kù)中選取資源并表現(xiàn),銷毀則是對(duì)已經(jīng)經(jīng)過的X軸、Y軸上的障礙的資源以及創(chuàng)建的物體進(jìn)行刪除、銷毀,減少電腦和手機(jī)內(nèi)存的占用。

3? 關(guān)鍵算法與思路的實(shí)現(xiàn)

基于上述的基礎(chǔ)程序設(shè)計(jì)與大致算法思路,可以在Unity3D中實(shí)現(xiàn)漢字跳一跳的游戲程序制作并加以完善,對(duì)于上述問題分別作出實(shí)現(xiàn)步驟與代碼。

3.1? 資源導(dǎo)入以及棋子、障礙等預(yù)制體創(chuàng)建

在Unity3D中創(chuàng)建初步的棋子以及障礙的預(yù)制體,將游戲所需資源導(dǎo)入其中,資源中包含預(yù)制使用的漢字音頻以及漢字圖像,用來提示正確與否以及其他各項(xiàng)情景時(shí)使用的音效。之后便將棋子以及障礙的預(yù)設(shè)調(diào)整到合適的大小,將其作為預(yù)制體進(jìn)行保存。

3.2? 棋子跳躍距離

游戲的面臨的首要問題便是如何實(shí)現(xiàn)棋子的跳躍,而要實(shí)現(xiàn)這一功能則是依據(jù)對(duì)力這一概念在Unity3D中編寫相應(yīng)代碼以及操作來使得棋子接受力的作用,從而進(jìn)行跳躍,但是在跳躍中按照原本的預(yù)想實(shí)現(xiàn)棋子按照一定的角度進(jìn)行跳躍,因此對(duì)力賦予向量角度值實(shí)現(xiàn)預(yù)想。棋子的跳躍距離是對(duì)棋子本身進(jìn)行設(shè)定,選擇使用基礎(chǔ)的函數(shù)來解決這一問題:記錄按動(dòng)按鍵的時(shí)間長(zhǎng)短并將時(shí)間帶入預(yù)設(shè)好的函數(shù)中,根據(jù)常量以及函數(shù)運(yùn)算得出結(jié)果,這個(gè)結(jié)果就是跳躍距離的長(zhǎng)短。在實(shí)現(xiàn)跳躍距離后對(duì)跳躍的動(dòng)畫效果進(jìn)行設(shè)計(jì),實(shí)現(xiàn)障礙壓縮、頂出等動(dòng)態(tài)動(dòng)作,在動(dòng)作完成時(shí)鏈接棋子跳躍,其中部分核心代碼如下:

if (Input.GetMouseButtonDown(0)&&SafeManager._instances.isSafe)

{

isPop = false;

oldTime = Time.time;

isForcetimer = true;

isPush = true;

}

if (isPush)

{

PushBarrierPlayerScale(barriers[barriers.Count - 2],player);

}

if (isForcetimer)

{

forceSize = Time.time - oldTime;

if (forceSize > 1)

{

forceSize = 1;

Addforze += 0.005f;

}

}

if (Input.GetMouseButtonUp(0) )

{

isForcetimer = false;

isPush = false;

isPop = true;

newTime = Time.time;

gameObject.GetComponent().AddForce(((SafeManager._instances.currentLookPos - gameObject.transform.position + new Vector3(0, addForceUpSize, 0))).normalized * (forceSize + Mathf.Log(Addforze)) * 500, ForceMode.Force);81A203D7-76DF-4C5D-9311-955E3A045C57

Addforze = 1;

forceSize = 0;

}

3.3? 棋子跳躍方向

根據(jù)游戲的初始設(shè)想是使得玩家在跳躍前能夠?qū)ζ遄犹S的路徑進(jìn)行判斷與選擇,使得整個(gè)游戲能夠使人認(rèn)知漢字,達(dá)到程序設(shè)計(jì)的目的,這一想法需要對(duì)其進(jìn)行新的代碼設(shè)計(jì),使得棋子能夠?qū)μS的方向進(jìn)行選擇,也就是能夠轉(zhuǎn)向,按照預(yù)想是根據(jù)按鍵按下來對(duì)方向進(jìn)行轉(zhuǎn)換,部分核心代碼如下;

if (Input.GetMouseButtonDown(1) && PlayerManager._instances.isGo == false)

{

if (currentLookPos.Equals(PlayerManager._instances.nextPos))

{

currentLookPos = PlayerManager._instances.nextFalseChineseBarrier.transform.position;

}

else

{

currentLookPos = PlayerManager._instances.nextPos;

}

}

3.4? 檢測(cè)棋子跳躍正確與否

棋子在跳躍前選擇跳躍方向、決定跳躍的距離之后便是對(duì)跳躍方向是否正確,跳躍距離是否符合以及可能出現(xiàn)的情況進(jìn)行建立檢測(cè)以及觸發(fā)的機(jī)制,在棋子的多項(xiàng)判斷的根據(jù)中主要是對(duì)可能出現(xiàn)的情況來進(jìn)行分別整理,如跳躍中無法繼續(xù)跳躍、并未跳躍成功且貼住障礙等可能出現(xiàn)的情況,一一進(jìn)行分析并思考應(yīng)該用怎樣的代碼程序去編寫判定觸發(fā)的機(jī)制。在對(duì)整體的游戲進(jìn)程進(jìn)行分析并對(duì)流程中預(yù)定步驟逐步分解,分成三個(gè)基本情況;進(jìn)入漢字時(shí)、離開漢字時(shí)、呆在漢字時(shí),并在此基礎(chǔ)上對(duì)整個(gè)機(jī)制進(jìn)行程序設(shè)計(jì)以及代碼編寫,部分代碼如下:

if (other.gameObject == PlayerManager._instances.currentBarrier)

{

PlayerManager._instances.isLastLeftBarrier = PlayerManager._instances.isLeftBarrier;

isSafe = false;

}

3.5? 障礙的自動(dòng)生成與銷毀

在跳一跳本來的游戲設(shè)計(jì)中,障礙是作為棋子的類似“墊腳石”的存在,通過跳躍在障礙上方來達(dá)到過關(guān)的目的,因此障礙也是游戲過關(guān)的條件,但在整體的游戲設(shè)計(jì)中不可能設(shè)計(jì)太多的障礙與相同的代碼占據(jù)不必要的空間以一種死板的方式來完成游戲,而是通過多項(xiàng)程序設(shè)計(jì)來實(shí)現(xiàn)障礙的生成與銷毀實(shí)現(xiàn)代碼的簡(jiǎn)潔明了化。在整個(gè)游戲中障礙是棋子落下的地方,也是棋子判斷跳躍方向以及跳躍距離的根據(jù),障礙不是將其作為單體并多次建立組成路徑,而是將其作為一個(gè)循環(huán),能夠使得障礙可以多次重復(fù)的生成與銷毀,并對(duì)其賦予新的材質(zhì),部分核心代碼如下:

if (barriers.Count > 4) //自動(dòng)刪除

{

Destroy(barriers[0]);

barriers.RemoveAt(0);

}

if (falseChineseBarriers.Count != 0)

{

Destroy(falseChineseBarriers[0]);

falseChineseBarriers.RemoveAt(0);

}

4? 結(jié)? 論

漢字跳一跳是在程序算法設(shè)計(jì)與思路實(shí)現(xiàn)過程中較為注重程序的實(shí)現(xiàn),在不斷地測(cè)試中找到意料之外的錯(cuò)誤并對(duì)其加以改良完善,通過對(duì)整體游戲的程序設(shè)計(jì)不斷改善以及根據(jù)情況進(jìn)行修改來使得整個(gè)游戲達(dá)到理想化的普遍情況。而在游戲中則是以Unity3D作為開發(fā)平臺(tái)進(jìn)行程序設(shè)計(jì)開發(fā)初步實(shí)現(xiàn)程序雛形,在之后對(duì)這一程序的不斷完善中發(fā)布到普通PC電腦、iOS、Android、mac電腦等多項(xiàng)游玩平臺(tái),具備更加優(yōu)秀的跨平臺(tái)性能,能夠在不同平臺(tái)間流暢運(yùn)行。

參考文獻(xiàn):

[1]胡靜,胡欣宇.基于Unity3D引擎的游戲設(shè)計(jì)與開發(fā) [J].電子元器件與信息技術(shù),2021,5(2):138-140+154.

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

[3] Unity Technologies.Unity5.x 從入門到精通 [M].北京:中國(guó)鐵道出版社,2016.

[4] SKEET J.深入理解C#:第3版 [M].姚琪琳,譯.北京:人民郵電出版社,2016.

[5] 盧金浩,張帥,伍傳敏.基于Unity3D三維游戲場(chǎng)景與AI系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) [J].三明學(xué)院學(xué)報(bào),2013,30(6):31-35+44.

作者簡(jiǎn)介:許向榮(2000—),男,漢族,河南周口人,本科在讀,研究方向:數(shù)字媒體技術(shù);張佳豪(2001—),男,漢族,河南周口人,本科在讀,研究方向:數(shù)字媒體技術(shù);李光印(2001—),男,漢族,河南許昌人,本科在讀,研究方向:數(shù)字媒體技術(shù)。

收稿日期:2022-02-06

基金項(xiàng)目:河南省高校省級(jí)大學(xué)生創(chuàng)業(yè)創(chuàng)新訓(xùn)練計(jì)劃項(xiàng)目(S202112746002)81A203D7-76DF-4C5D-9311-955E3A045C57

猜你喜歡
游戲
做游戲
夜間游戲
游戲
送信游戲
數(shù)獨(dú)游戲
瘋狂的游戲
飛碟探索(2016年11期)2016-11-14 19:34:47
爆笑游戲
第八章直接逃出游戲
第八章 直接逃出游戲
游戲五計(jì)算
主站蜘蛛池模板: 91久久青青草原精品国产| 黄色片中文字幕| 亚洲色图欧美视频| 亚洲香蕉伊综合在人在线| 毛片免费在线视频| 久久久久免费看成人影片| 2021国产精品自产拍在线观看| 99热国产这里只有精品无卡顿"| 在线精品欧美日韩| 成人一级免费视频| 手机精品福利在线观看| 国产色爱av资源综合区| 久久久久久久蜜桃| 日韩第一页在线| 少妇高潮惨叫久久久久久| 在线看国产精品| 国产三区二区| 99国产精品国产高清一区二区| 欧美三级自拍| 欧美午夜视频在线| 中文字幕欧美日韩高清| 精品国产毛片| 国产激爽爽爽大片在线观看| 香蕉视频在线精品| 免费观看成人久久网免费观看| 毛片一级在线| 亚洲一级毛片| 久久久精品无码一二三区| 黄色在线网| 亚洲欧美综合另类图片小说区| 亚洲成人一区二区三区| 国产区精品高清在线观看| 国产肉感大码AV无码| 美女潮喷出白浆在线观看视频| 九九视频免费看| 天堂成人在线| 日本成人精品视频| jizz在线观看| 国产成人1024精品下载| 国产AV无码专区亚洲A∨毛片| 欧美日本二区| 国产福利小视频在线播放观看| 亚洲色图欧美视频| 制服丝袜 91视频| 性视频一区| 中国毛片网| 精品自拍视频在线观看| 中文精品久久久久国产网址| 国产男人天堂| 国产精品lululu在线观看| 噜噜噜久久| 国产香蕉在线| 伊人久久婷婷| 国产精品久久久精品三级| 中文无码精品a∨在线观看| 亚洲男人的天堂视频| 国产噜噜噜| 欧美啪啪一区| 欧美成人午夜影院| 在线观看av永久| 国产极品嫩模在线观看91| 操操操综合网| 亚洲成人精品久久| 国产导航在线| 国产免费久久精品99re丫丫一| 国产网站黄| 亚洲国产91人成在线| 色欲国产一区二区日韩欧美| 国产一区三区二区中文在线| 国产精品男人的天堂| 欧美成人在线免费| 99久久精品久久久久久婷婷| 无码啪啪精品天堂浪潮av| 国产不卡一级毛片视频| 亚洲精品天堂自在久久77| 欧美日韩免费观看| 国产成人啪视频一区二区三区| 免费国产高清视频| 欧美不卡视频在线| 一本无码在线观看| 国产女人在线观看| 日本不卡视频在线|