iT邦幫忙

2023 iThome 鐵人賽

DAY 18
1
Modern Web

什麼!在網頁上也可以寫遊戲?系列 第 18

[Day 18] 建立圖層佈局介紹-圖層觀念篇

  • 分享至 

  • xImage
  •  

之前的介紹,我們都是透過光暈戰記這款遊戲作為輔佐,為了快速的讓各位了解事件表的運作,以及各項功能的實際應用,而如今我們已經了解了事件表大部分的運作模式,所以從今天開始我們就要回歸原始人,在沒有這款遊戲的輔佐之下,事件表究竟還能做到什麼事情呢?畢竟我們的主題可不是介紹光暈戰記呢。

首先我們要來介紹,如果只安裝最基本的事件表模組時,其中一個可謂是最重要的動作——建立圖層佈局,這個動作簡單的說就是用來讓我們在遊戲舞台上放置圖片的,但在這之前,我們得先來聊聊一個非常重要的觀念——圖層

什麼是圖層?

當我們什麼都不做,直接開始測試事件表的時候,只會有一個最基本的圖層,叫做 root,接下來我們不管新增什麼文字、圖案、圖片等之類的顯示物件,都會被加入到 root 這個圖層之中,進而顯示在我們的遊戲舞台上,root 本身是一個無形的 容器,目的就是為了讓我們可以將其他顯示物件放上去。

除了那些顯示物件以外,root 本身身為容器,也可以容納其他容器,這時兩個圖層疊加在了一起,因此而有了上下之分,root 作為其他物件的容器,必然是在最底下,我們接下來舉個生活化的例子讓大家看看,或許會比較清楚。

假設有一張餐桌,桌上放了各式各樣的物品,例如蠟燭、盤子、湯匙、叉子、衛生紙、杯子等等,而盤子上又各自裝了一些美食,杯子裡也裝滿了果汁、飲料等,這時我們如果移動餐桌,那餐桌上的所有東西都會跟著移動,如果我們移動盤子,盤子上的美食會跟著移動,而移動杯子則是杯子內的飲料跟著移動,看起來很理所當然吧?

讓我們把圖層套用到上面的生活例子中,root 就是指餐桌,餐桌上的各種物品就是各個顯示物件,其中也包刮了一些容器,這些容器當中分別又裝了一些東西,所謂圖層就是指這些物件之間的相互關係,美食在盤子上面,所以盤子移動,美食便會移動,而盤子又在桌子上面,所以桌子移動,盤子跟美食都會移動。

在餐桌上,每一個物件都有對應的親子關係,像是餐桌容納著所有物品,所以對於這些物品來說,餐桌就是它們的 parent,父母親的意思,我們通常稱之為 父節點,而這些物品對於餐桌來說,就像是它的 children,孩子們的意思,我們通常稱之為 子物件、子節點,舉一反三,盤子就是美食的父節點,飲料就是杯子的子物件,而餐桌其實除了父節點以外,由於它也是所有物件的根源,因此它也被稱為 根節點

容器本身是無形的,它只是一個圖層的代表,任何顯示物件其實也都具有容器的性質,也就是說每個顯示物件其實都是一個圖層,例如湯匙也可以是一個容器,當它舀起其他美食、湯時,它不就是個容器了嗎?

如果你已經了解了上面的例子,那麼接下來的動作對你來說簡直就是小兒科!

建立新專案

由於我們不再使用光暈戰記相關的模組了,所以為此我新增了一個新專案 ironman2023_cook_2,這一次不再是摳專案了,而是 新增一個空白專案,選項我都使用預設,不過一定要確保 CgEventsLib 模組有被勾選。

可以看到這次的專案內清靜了許多,不管是 .md 檔還是左邊的檔案櫃,不過 .md 檔依然有個藍色的小按鈕,點下去之後就回到了我們熟悉的事件表了。

建立圖層佈局


首先當然就是新增一個事件,接著讓我們打開動作 新增/顯示 內的 建立圖層佈局,這時你會發現這個動作比起其他動作來說,多了一個很酷的界面——圖片佈局,可以看到右邊有兩個分類,顯示物理,但我們今天只會介紹顯示的部分,物理又是另外一個層面的東西了,它可以讓我們在 CG 上實現逼真的物理效果,但是因為它實在是太酷了,今天肯定是介紹不完,所以改天再說。

接著往下可以看到 資源物件 兩個區塊,而資源內預設有三種類別,分別是 文字框形狀容器,而若是我們的專案內有加載其他圖片資源時,也會出現在這裡,只要點一下,對應的資源就會以物件的形式被加入到佈局當中,也就是我們的遊戲舞台,此時右下角的物件區就會顯示對應的物件,左邊則會有相對應的各項設定。

其中最特別的物件就是容器,就如同我上面所提到的,容器本身是無形的,它僅具備一些例如位置、中心點、大小等等的屬性,並且容器內也可以裝入其他任意顯示物件,包括容器,因此在容器的物件右邊,會多出一個箭頭按鈕,點下去之後會進入該容器的圖層,若在此時加入新物件,此物件就會被加入到該容器的圖層之中。

在佈局之中,我們可以通過滑鼠點擊顯示物件,來拖曳它們的位置,藉此我們可以來測試不同圖層之間的相互關係,我們先在根節點利用 +形狀 產生一個 圓形,而後新增一個 容器,並進入容器之中新增一個 方形多邊形,如同上圖那樣,接著嘗試使用滑鼠,來拖動佈局中的物件們。

在這裡我們只能拖動目前圖層中,位於子節點的顯示物件,由於我們還在容器內的關係,所以我們只能拖動方形和多邊形而已,並且由於先後順序的關係,後加入的多邊形始終會呈現在方形的上方,如果我們要改變它們之間的前後關係,可以從物件區拖曳改變它們的排序,來改變他們之間的前後關係。

接著讓我們退出容器來到根節點,同樣使用滑鼠拖曳佈局中的顯示物件,這時我們除了可以移動圓形以外,還可以移動容器本身,注意到了嗎,由於我們的方形和多邊形放在容器內,所以當容器被移動時,它們也會隨之移動,當然我們也可以進一步的調整容器的 角度縮放透明度,容器內的顯示物件都會根據容器的屬性而發生改變。

如此一來,對於圖層的概念是不是又更加熟悉了呢?此時我們將動作儲存,執行事件表,就可以看到我們剛剛加入的物件都顯示在了舞台之上。

CG 範例事件表

總結

今天用了一整篇除了介紹動作以外,其實更重要的是對於圖層觀念的介紹,因為這對於我們日後在製作遊戲的路上非常重要,可能有些人覺得這很簡單,沒什麼,尤其是有在畫畫的人,但也有人搞了很久還是沒有弄明白這到底是什麼鬼東西,所以希望通過今天的介紹能夠讓各位對圖層有個基本的認識,因為接下來,或許我們得和它相觸好一陣子了。


上一篇
[Day 17] 參考事件的實際應用-函數事件
下一篇
[Day 19] 建立圖層佈局介紹(續)
系列文
什麼!在網頁上也可以寫遊戲?30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言