最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

《G SRPG》項目講解(一) Level&Map

2022-08-20 06:17 作者:DH_DoveG  | 我要投稿

《G SRPG》是使用Godot游戲引擎制作的一個【SRPG】類型的項目。該項目的源碼可訪問:https://www.aliyundrive.com/s/XY2qHQwGK26 獲取。這個專欄主要是說說我在制作《G SRPG》時的想法與思路。

棋盤是SRPG的基礎(chǔ)要素之一。本文簡要分享我在制作《G SRPG》的實現(xiàn)思路。

關(guān)于棋盤:

在此項目中,棋盤的場景及組件都存放在了【Map】文件夾下。文件結(jié)構(gòu)如下:

Map目錄下的文件結(jié)構(gòu)

雖然說該文件夾下的文件比較多(而且分類做得不好),但核心組件只是如下幾項:

Sub.tscn :選中下標(biāo)。非常重要的一個組件(因為該項目設(shè)計上操作是全鍵盤的)。

Clicks.gd :提供可讓Sub選中的區(qū)域。

Map.gd :管理繪制的TileMap

Units.gd :管理棋子的增減與行動系統(tǒng)(此項目中以棋子的速度決定行動順序)

Level.tscn :初始化組件

下面來介紹Level與Map:

Level.tscn

level

level的作用主要是做組件的初始化工作。

設(shè)置了三個變量方便設(shè)計關(guān)卡:

winNextScene :獲勝后載入的場景

loseNextScene :失敗后載入的場景

joinUnitNum :可以參加戰(zhàn)斗的棋子的人數(shù),這與另外一個場景(Plan)有關(guān),此處不介紹。


Map.gd

這腳本主要提供了用于棋子尋路的A*算法用于顯示棋子可以抵達(dá)的區(qū)域的洪水算法。

obsSet :為了方便修改障礙物與設(shè)置經(jīng)過障礙物所消耗的代價。以key為圖塊下標(biāo);value為經(jīng)過代價。如果代價是1以下的數(shù)值將是不可穿越的。

這函數(shù)會在棋子使用攻擊時調(diào)用

前面有幾段是轉(zhuǎn)換棋子們的坐標(biāo)

此函數(shù)使用了 MakeGrid.gd ,關(guān)于這個可以看我之前的視頻。顯示攻擊區(qū)域的話,不在Map中調(diào)用也是沒有問題的,不過在寫的時候,考慮到可能后續(xù)會有什么“不能隔著障礙物攻擊目標(biāo)”的攻擊模式所以就就將攻擊的顯示可攻擊區(qū)域的函數(shù)放到了Map中。

黃色區(qū)域為可攻擊區(qū)域

當(dāng)前的設(shè)計來說,無論攻擊區(qū)域上有沒有障礙物都是可以顯示攻擊區(qū)域。

接下來就是移動了,移動的話,一般顯示移動都是一個范圍,這個可以使用洪水算法這個我也是在搜索后才知道的,所以有問題果然還是馬上搜索一下比較好。

使用洪水算法獲得可以抵達(dá)的區(qū)域

這里在寫的時候,我做了將得到的范圍減去內(nèi)圈只保留最外面一圈的操作,這一段沒有什么愿意,即使刪掉減去內(nèi)圈的代碼也沒有什么影響。

藍(lán)色區(qū)域為生成可以移動到的區(qū)域

既然現(xiàn)在有區(qū)域了,那接下來就需要讓棋子移動到一個位置上去,這個項目中使用的是A*,我在這個項目中得到,大家可以去看載看一下。

說點閑話

這是第一次寫這種東西,寫得不好請見諒。


《G SRPG》項目講解(一) Level&Map的評論 (共 條)

分享到微博請遵守國家法律
电白县| 磴口县| 五原县| 九龙坡区| 湘乡市| 石门县| 弋阳县| 临桂县| 怀化市| 睢宁县| 东乡| 晴隆县| 资兴市| 怀远县| 屏东市| 崇左市| 抚松县| 平潭县| 吴忠市| 章丘市| 托里县| 沁阳市| 关岭| 井冈山市| 汝阳县| 佛冈县| 台中县| 莲花县| 彰化市| 湘西| 巢湖市| 安岳县| 手游| 巫溪县| 阜平县| 保亭| 建瓯市| 东源县| 陕西省| 沙洋县| 灵山县|