freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于gml的2d游戲設(shè)計(jì)畢業(yè)論文(編輯修改稿)

2025-07-21 15:34 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 者自定義的變量,就可以定義各種不同的Object。這些Object可以有簡(jiǎn)單的繼承(parent)關(guān)系,因此可以在一定程度上把Object理解成類(lèi)(class),但又和C++等傳統(tǒng)面向?qū)ο蟮乃枷胗兴煌ū热鏞bject中無(wú)法定義Function)[7]。通過(guò)內(nèi)置函數(shù)instance_create可以將某個(gè)指定的object實(shí)例化。在實(shí)例化之后,每個(gè)Instance實(shí)例都會(huì)有一個(gè)Index索引。這個(gè)索引相當(dāng)于實(shí)例的唯一標(biāo)識(shí),類(lèi)似Win32編程的句柄。一個(gè)實(shí)例可以通過(guò)得到其他實(shí)例的索引,去修改其他實(shí)例的成員變量。事件驅(qū)動(dòng)行為的設(shè)計(jì)思想:GML語(yǔ)言中,每一個(gè)Object都有各種事件。比如Object被實(shí)例化時(shí)的Create事件,每一幀都循環(huán)一次的Step事件,被銷(xiāo)毀時(shí)觸發(fā)的Destroy事件等。在各種不同的事件中,編寫(xiě)相應(yīng)的行為,即可實(shí)現(xiàn)對(duì)應(yīng)功能。例如子彈在銷(xiāo)毀時(shí),播放一個(gè)爆炸的音效,就可以在其Destroy事件中添加代碼audio_play_sound(se_explode,0,0)。房間舞臺(tái)的設(shè)計(jì)思想:盛放Object實(shí)例的容器,既是GML中所說(shuō)的Room房間。一個(gè)房間具有room_width房間寬度、room_height房間高度、room_speed房間速度等屬性。其中房間速度是指房間每秒刷新的幀數(shù)。本項(xiàng)目中,默認(rèn)的刷新率均為60幀每秒。房間中的各種Object組成了游戲的各種角色,當(dāng)房間進(jìn)行到下一幀時(shí),其中的所有實(shí)例均出發(fā)一次Step事件,從而實(shí)現(xiàn)了游戲的過(guò)程。 系統(tǒng)功能結(jié)構(gòu)設(shè)計(jì)控制類(lèi)型的Object游戲運(yùn)行的過(guò)程中,需要有一些全局Object對(duì)整個(gè)游戲做統(tǒng)一調(diào)度。比如視野控制,暫??刂疲藛慰刂?,甚至記錄玩家的游戲流程等等。這些Object可以被稱(chēng)為是全局控制實(shí)例[8]。如圖31所示。圖31 控制類(lèi)型的Object其中大多數(shù)實(shí)例化的控制類(lèi)型的Object的生命周期是貫穿整個(gè)游戲的。角色類(lèi)型的Object以玩家控制的主角為例,游戲中的任何一個(gè)角色,都可以是一個(gè)獨(dú)立的Object。 5 系統(tǒng)詳細(xì)設(shè)計(jì)及代碼實(shí)現(xiàn)游戲?yàn)榫€性流程,因此在結(jié)構(gòu)上較為清晰。由以下幾個(gè)主要部分組成:主菜單,游戲劇情演出,游戲開(kāi)始,游戲中菜單呼出,保存讀取。其中主要功能的實(shí)現(xiàn)又由以下模塊實(shí)現(xiàn):使用柵格保存地形信息;玩家的邏輯操作(移動(dòng) / 戰(zhàn)斗 / 場(chǎng)景交互等);自創(chuàng)類(lèi)HTML標(biāo)記語(yǔ)言,實(shí)現(xiàn)劇情演出;A*尋路算法;VS編寫(xiě)DLL,外部資源加載打包;材質(zhì)貼圖( );Shader著色器;UI特效制作(混合模式等)音效處理 / 動(dòng)畫(huà)處理;用戶體驗(yàn)改進(jìn)。游戲運(yùn)行的過(guò)程中,很多情況需要判斷地形。如圖41的例子。圖41 地形示例舉例來(lái)說(shuō),當(dāng)玩家在上圖的位置時(shí),系統(tǒng)需要知道什么地方可以通行(道路,橋梁),什么地方不能通行(河流,樹(shù)木)。而這個(gè)能否通行的屬性,就可以理解成地形信息。本項(xiàng)目是2D游戲,因此所有信息處理都是針對(duì)于二維平面。因此采用了Grid柵格結(jié)構(gòu)。所謂柵格,是GML中所支持的一種常見(jiàn)的數(shù)據(jù)結(jié)構(gòu)[9],其特點(diǎn)如圖42。圖42 柵格的結(jié)構(gòu)柵格可以簡(jiǎn)單理解成一個(gè)二維數(shù)組,其中的每一個(gè)元素都有自己獨(dú)立的數(shù)值。我們可以把游戲地圖的X坐標(biāo)以及Y坐標(biāo)理解成柵格中的X坐標(biāo)和Y坐標(biāo),然后通過(guò)對(duì)每一個(gè)點(diǎn)的值進(jìn)行設(shè)定,從而實(shí)現(xiàn)功能。用上圖舉例可以把地圖中的某一塊區(qū)域分成一個(gè)8X8的柵格,柵格中,可以通行的地方,記為0,不可通行的地方,記為1。這樣一來(lái),就實(shí)現(xiàn)了對(duì)地圖信息的記錄。而當(dāng)需要獲取這些信息時(shí),只需要提供X坐標(biāo)以及Y坐標(biāo),即可找到對(duì)應(yīng)柵格的數(shù)據(jù),從而做出判斷。如圖43,其中紅色區(qū)域不可通行,記為1,綠色區(qū)域可以通行,記為0。圖43 地形柵格化此外,還可以使用二進(jìn)制數(shù)據(jù)去保存更多信息。如此時(shí)需要知道玩家此時(shí)所在的地方,是橋梁還是道路,就可以把每一個(gè)柵格中的數(shù)據(jù)規(guī)定為二位二進(jìn)制數(shù)。第一位表示能否通行,第二位表示是橋梁(假設(shè)用1表示)還是道路(假設(shè)用0表示)。上圖中,坐標(biāo)(4,5)的區(qū)域,可以通過(guò)(0),并且是橋梁(1),就可以表示成01b;而坐標(biāo)(0,5)表示的區(qū)域,可以通過(guò)(0),并且是道路(0),故可以表示成00b。這樣就能用最高的數(shù)據(jù)密度保存地形信息,保證了游戲運(yùn)行的效率以及盡可能少的占用內(nèi)存。使用時(shí),只要通過(guò)二進(jìn)制的位與和位或運(yùn)算,即可得到想要坐標(biāo)的任意一個(gè)屬性。在RPG游戲中,對(duì)游戲角色的控制是整個(gè)游戲的靈魂所在。而在本項(xiàng)目中,因?yàn)榉直媛氏鄬?duì)較高,角色移動(dòng)相對(duì)自由,在邏輯操作上也存在一些問(wèn)題。GML中對(duì)2D游戲設(shè)計(jì)非常強(qiáng)大,例如想要實(shí)現(xiàn)“按住右方向鍵,角色向右移動(dòng)”,只需要一句代碼即可實(shí)現(xiàn)。if (keyboard_check(key_right)) // 檢測(cè)鍵盤(pán)右方向鍵狀態(tài) if(mp_grid_get_cell(,x + 1,y) == 0)//檢測(cè)目標(biāo)位置是否可以通行 x += 1。 // 如果滿足以上條件,則x坐標(biāo)加1接下來(lái),只有把這句代碼放入Step事件中,每幀做一次判斷,即可實(shí)現(xiàn):當(dāng)鍵盤(pán)的右方向鍵按下時(shí),判斷角色目標(biāo)坐標(biāo)是否可以通行。如果可以,角色的x坐標(biāo)向正方向(屏幕右側(cè))加1。從而達(dá)到了鍵盤(pán)控制角色移動(dòng)的目的。然而,這種簡(jiǎn)單的判斷,對(duì)于操作手感有一定負(fù)面影響。如圖44所示。圖44 優(yōu)化移動(dòng)判定假設(shè)玩家在(0,11),想要向右邊移動(dòng)。此時(shí)如果按照上述代碼執(zhí)行,則會(huì)卡在(2,11)的位置不能移動(dòng)。玩家便不得不先向上移動(dòng)一格,然后再繼續(xù)向右移動(dòng)。為了避免這種情況的發(fā)生,代碼做出了如下調(diào)整。for (i = abs(h_spd)。 i 0。 i = 1。){ move_check = sign(h_spd) * i。 if (mp_grid_get_cell(,x + move_check,y) == 0) { x += move_check。 break。 } else if (mp_grid_get_cell(,x + move_check,yi) == 0) { y = i。 } else if (mp_grid_get_cell(,x + move_check,y+i) == 0) { y += i。 }}這段代碼,是在當(dāng)目標(biāo)方向上不能通行時(shí),則對(duì)目標(biāo)方向的周?chē)鴺?biāo)做一個(gè)遍歷,從而找到最近的一個(gè)可通行坐標(biāo)。依舊以上圖舉例,當(dāng)程序發(fā)現(xiàn)(3,11)不可通行時(shí),就會(huì)循環(huán)檢測(cè)(3,10)或(3,12)是否可以通行。如果可以,則移動(dòng),不可以則檢測(cè)(3,9)或(3,13)。直到找到可通行的坐標(biāo)或者循環(huán)結(jié)束?!逗?怂埂穼儆赗PG游戲中的動(dòng)作解謎RPG。所謂解謎要素
點(diǎn)擊復(fù)制文檔內(nèi)容
物理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1