從零點五開始用Unity做半個2D戰棋小遊戲(一)

遊資網發表於2018-12-03


這次想要一個簡單且傳統的戰棋小遊戲,大概的玩法是:在2D世界裡建立一張由六邊形地塊組成的戰鬥地圖,敵我雙方依據體力在地圖上輪流行動並向對方發動攻擊,先消滅掉所有敵人的一方將獲得勝利。

預計將分為以下幾篇:

1、建立戰場

根據預定尺寸生成戰場地圖,並隨機一些障礙物。

2、新增戰場地圖功能

實現戰場格子點選反饋,地圖導航及範圍選定。

3、新增對戰雙方

向戰場中新增作戰單位,作戰單位按照一定規則輪流行動,可進行移動、攻擊等。

4、加入玩家控制

新增可以隨時顯示戰況的Hud、為作戰單位新增血條等。

5、新增戰場UI

新增可以隨時顯示戰況的Hud、為作戰單位新增血條等。

6、擴充套件作戰單位

豐富作戰單位的型別,新增職業,並加入若干不同型別的技能。

7、擴充套件戰場地圖

豐富戰場地圖,加入地形及道具等元素。

8、規範戰鬥配置

可以通過規範化的資料結構配置戰場、職業、技能、道具等。

一、建立戰場

本次的主題是建立戰場。

|  目標

生成一個規定尺寸的戰場,戰場上的格子均為六邊形,並且暫定兩種格子型別:普通格子和障礙格子。

|  在開始之前我做了以下事情

1.建立了新的工程。

2.新建場景並儲存在場景資料夾下。

3.刪除預設建立的平行光,調整場景光照設定,棄用了天空盒等。

4.將相機調整為正交相機。

因為是從零點五開始系列,認為讀者有一定的Unity引擎使用基礎,就不對這些操作進行介紹了。

|  建立戰場地圖

我沒有采用把資料和顯示捆綁在一起的做法,而是將資料和顯示分離。

我的思路是用一個戰鬥建立器來建立戰鬥,一場完整的戰鬥資訊至少應包含地圖及對戰雙方的資訊。而Unity搭建的戰鬥場景則可以理解為一場戰鬥的顯示器。

|  資料部分(主要)

戰鬥資料:地圖尺寸,包含所有格子的二維陣列。

格子資料:格子型別,所在行列,所在空間座標。

從零點五開始用Unity做半個2D戰棋小遊戲(一)

|  顯示部分(主要)

戰場:一個用於組織所有格子物件的節點物件。

格子物件:一個能顯示六邊形瓦片的2D渲染器,並根據格子型別改變顏色。

從零點五開始用Unity做半個2D戰棋小遊戲(一)

當需要將戰鬥表現出來時,需要將以上資料裝入一個用於顯示的“戰場”,這個戰場就是在Unity世界裡建立的。

從零點五開始用Unity做半個2D戰棋小遊戲(一)

|  在Unity中建立戰場

目前戰場的結構還非常簡單,只需要一個組織格子單位的節點。

從零點五開始用Unity做半個2D戰棋小遊戲(一)

|  建立格子

建立一個格子指令碼,並掛在一個新建立的空物件上。

從零點五開始用Unity做半個2D戰棋小遊戲(一)

為這個空物件新增一個子物件,稱之為瓦片,用來顯示一個六邊形。

因為這裡我只想做一個2D的Demo,因此我們只需要一個SpriteRenderer元件即可。
從零點五開始用Unity做半個2D戰棋小遊戲(一)


使用預先準備的一張六邊形圖片作為地塊顯示,一個格子物件就做好了。

從零點五開始用Unity做半個2D戰棋小遊戲(一)

為了區分普通和障礙,暫定普通格子為白色,障礙格子為灰色。

從零點五開始用Unity做半個2D戰棋小遊戲(一)

戰場載入後節點的狀態。

|  部分程式碼

從零點五開始用Unity做半個2D戰棋小遊戲(一)

鋪設普通格子。

從零點五開始用Unity做半個2D戰棋小遊戲(一)

隨機放一些障礙格子。

從零點五開始用Unity做半個2D戰棋小遊戲(一)

戰場根據格子資訊,顯示格子。

從零點五開始用Unity做半個2D戰棋小遊戲(一)

格子根據不同型別顯示不同顏色。

從零點五開始用Unity做半個2D戰棋小遊戲(一)

初始隨機多張地圖,並切換檢視。

至此,難度最低的第一篇已經完成。

來源: 遊戲扶持by騰訊遊戲學院
原地址:https://mp.weixin.qq.com/s/KPw5cihN4Sgpqoi86FAPkw


相關文章