从零点五开始用Unity做半个2D战棋小游戏(一)
好久不見。
這是第17篇與游戲開發(fā)有關(guān)的文章。
也是“從零點五開始系列”第二輯的開始。
| 寫在最前
這次想要做的一個小游戲,或者說一個小Demo,其實是一個簡單且傳統(tǒng)的戰(zhàn)棋戰(zhàn)斗場景。初步的設計是:在2D世界里創(chuàng)建一張由六邊形地塊組成的戰(zhàn)斗地圖,敵我雙方依據(jù)體力在地圖上輪流行動并向?qū)Ψ桨l(fā)動攻擊,先消滅掉所有敵人的一方將獲得勝利。
這一輯將比上一輯的內(nèi)容更簡單,但完成后會是一個功能較完整且可以玩耍的Demo。
我使用的Unity版本是2018.2.7,但是其實并沒有用到2018的任何新功能。
預計將分為以下幾篇:
1、創(chuàng)建戰(zhàn)場
根據(jù)預定尺寸生成戰(zhàn)場地圖,并隨機一些障礙物。
2、添加對戰(zhàn)雙方
向戰(zhàn)場中添加作戰(zhàn)單位,作戰(zhàn)單位可被點選,并進行移動。
3、戰(zhàn)場邏輯
作戰(zhàn)雙方按照順序依次行動,可進行移動、攻擊。
4、添加戰(zhàn)場UI
添加可以隨時顯示戰(zhàn)況的Hud、為作戰(zhàn)單位添加血條等。
5、擴展作戰(zhàn)單位
豐富作戰(zhàn)單位的類型,添加職業(yè),并加入若干不同類型的技能。
6、擴展戰(zhàn)場地圖
豐富戰(zhàn)場地圖,加入地形及道具等元素。
7、規(guī)范戰(zhàn)斗配置
可以通過規(guī)范化的數(shù)據(jù)結(jié)構(gòu)配置戰(zhàn)場、職業(yè)、技能、道具等。
本次的主題是創(chuàng)建戰(zhàn)場。
| 目標
生成一個規(guī)定尺寸的戰(zhàn)場,戰(zhàn)場上的格子均為六邊形,并且暫定兩種格子類型:普通格子和障礙格子。
| 在開始之前我做了以下事情
1.創(chuàng)建了新的工程。
2.新建場景并保存在場景文件夾下。
3.刪除默認創(chuàng)建的平行光,調(diào)整場景光照設置,棄用了天空盒等。
4.將相機調(diào)整為正交相機。
因為是從零點五開始系列,認為讀者有一定的Unity引擎使用基礎(chǔ),就不對這些操作進行介紹了。
| 創(chuàng)建戰(zhàn)場地圖
我沒有采用把數(shù)據(jù)和顯示捆綁在一起的做法,而是將數(shù)據(jù)和顯示分離。
我的思路是用一個戰(zhàn)斗創(chuàng)建器來創(chuàng)建戰(zhàn)斗,一場完整的戰(zhàn)斗信息至少應包含地圖及對戰(zhàn)雙方的信息。而Unity搭建的戰(zhàn)斗場景則可以理解為一場戰(zhàn)斗的顯示器。
| 數(shù)據(jù)部分(主要)
戰(zhàn)斗數(shù)據(jù):地圖尺寸,包含所有格子的二維數(shù)組。
格子數(shù)據(jù):格子類型,所在行列,所在空間坐標。
| 顯示部分(主要)
戰(zhàn)場:一個用于組織所有格子對象的節(jié)點對象。
格子對象:一個能顯示六邊形瓦片的2D渲染器,并根據(jù)格子類型改變顏色。
當需要將戰(zhàn)斗表現(xiàn)出來時,需要將以上數(shù)據(jù)裝入一個用于顯示的“戰(zhàn)場”,這個戰(zhàn)場就是在Unity世界里創(chuàng)建的。
| 在Unity中創(chuàng)建戰(zhàn)場
目前戰(zhàn)場的結(jié)構(gòu)還非常簡單,只需要一個組織格子單位的節(jié)點。
| 創(chuàng)建格子
創(chuàng)建一個格子腳本,并掛在一個新創(chuàng)建的空對象上。
為這個二手手游賬號買賣添加一個子對象,稱之為瓦片,用來顯示一個六邊形。
因為這里我只想做一個2D的Demo,因此我們只需要一個SpriteRenderer組件即可。
使用預先準備的一張六邊形圖片作為地塊顯示,一個格子對象就做好了。
為了區(qū)分普通和障礙,暫定普通格子為白色,障礙格子為灰色。
戰(zhàn)場加載后節(jié)點的狀態(tài)。
| 部分代碼
鋪設普通格子
隨機放一些障礙格子
戰(zhàn)場根據(jù)格子信息,顯示格子
格子根據(jù)不同類型顯示不同顏色
初始隨機多張地圖,并切換查看。
| 寫在最后
至此,難度最低的第一篇已經(jīng)完成。
感謝您能讀到這里。
愿不忘初心。
下回見。
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的从零点五开始用Unity做半个2D战棋小游戏(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 入门顶点动画纹理的实例化绘制
- 下一篇: 从零点五开始用Unity做半个2D战棋小