用Unity做半個2D戰棋小遊戲(四):加入玩家控制
這次想要一個簡單且傳統的戰棋小遊戲,大概的玩法是:在2D世界裡建立一張由六邊形地塊組成的戰鬥地圖,敵我雙方依據體力在地圖上輪流行動並向對方發動攻擊,先消滅掉所有敵人的一方將獲得勝利。
預計將分為以下幾篇:
1、建立戰場
根據預定尺寸生成戰場地圖,並隨機一些障礙物。
2、新增戰場地圖功能
實現戰場格子點選反饋,地圖導航及範圍選定。
3、新增對戰雙方
向戰場中新增作戰單位,作戰單位按照一定規則輪流行動,可進行移動、攻擊等。
4、加入玩家控制
新增可以隨時顯示戰況的Hud、為作戰單位新增血條等。
5、新增常用的介面
建立介面管理器,加入一些常用的介面。
6、新增常用的戰場顯示
為戰鬥單位新增血條,加入傷害文字顯示。
7、擴充套件作戰單位
豐富作戰單位的型別,新增職業,並加入若干不同型別的技能。
8、擴充套件戰場地圖
豐富戰場地圖,加入地形及道具等元素。
9、規範戰鬥配置
可以通過規範化的資料結構配置戰場、職業、技能、道具等。
本次的主題是:加入玩家控制。
專案程式碼會上傳至我的Github:https://github.com/elsong823/HalfSLG中,有興趣的同學請自取。
目標
分配一個角色給玩家手動操作,每回合玩家有一次行動機會,行動的規則是:可從移動、攻擊、待命中選擇一次操作,當玩家選擇移動後,還可選擇一次攻擊或待命的操作;玩家也可以不進行移動直接選擇攻擊或待命,這也會結束當前行動回合。
實現後的效果如下圖:
這次要做的非常少,因為之前已經寫好了戰鬥邏輯,只需要把手動操作加入即可。
準備工作
首先,為戰鬥單位設定一個是否為手動操作的標記。
其次,為戰鬥單位設定一個手動操作狀態,標記這個戰鬥單位是否可以移動、攻擊。
最後,新增一種新的戰鬥單位操作狀態和動作,分別是等待玩家操作狀態及等待手動操作的動作。
當輪到玩家操作時,戰鬥的單位會顯示綠色邊框。
手動操作的邏輯
大概思路是:戰場維護一個戰鬥單位的行動佇列,每當輪到一個單位行動時,如果這個單位是自動操作的,那麼它會自己決定目標,移動並攻擊,上回我們將資料與渲染進行了分離,因此它只是產生了一次行動資料(Action)。
如果這個單位是手動操作的,那它會產生一個等待手動輸入的行動資料,同時返回等待玩家操作狀態。
當戰場發現自己收到了一個等待玩家操作的狀態,就明白其實剛才的傢伙並沒有生成任何有意義的戰鬥資料,因此它必須通知自己的渲染器(那個用來顯示的模組,上回我們介紹過):嘿,幫我問問他到底想幹嘛?
渲染器通過UI與玩家進行互動,獲得玩家要移動、攻擊或是待命等“有用”的戰鬥資訊後,再回頭通知戰場“這個傢伙已經行動過了”,戰場再讓下一個單位行動。
簡易的行動流程圖
由於下一回我們才會加入戰場UI,這裡我們先用Unity自帶的GUI代替。
用GUI顯示一個列表,接收玩家的操作
寫在最後
2018年瞬間就過去了,回想年初時豪情萬丈列下的“2018年必做之十大事”,如今...額...都不敢看清單上有什麼...
過去的就讓他過去吧...2019年,請自己繼續加油吧。
初心易得,始終難求。
下回見。
作者:/zt枸杞憂天
來源:騰訊遊戲學院
原地址:http://gad.qq.com/article/detail/288998
相關文章
- 用Unity做半個2D戰棋小遊戲(三):新增對戰雙方Unity遊戲
- 用Unity做半個2D戰棋小遊戲(五):新增常用的介面Unity遊戲
- 從零點五開始用Unity做半個2D戰棋小遊戲(一)Unity遊戲
- 【Unity3D開發小遊戲】《戰棋小遊戲》Unity開發教程Unity3D遊戲
- 用Unity做個遊戲(二) – 事件系統Unity遊戲事件
- 邊學邊做的第一個Unity小遊戲Unity遊戲
- 用Unity做個遊戲(五) – 編輯器擴充套件Unity遊戲套件
- Unity遊戲示例來了,用Unity開源遊戲資源做遊戲,遊戲開發不再難!Unity遊戲開發
- [Unity3D] 2D畫素遊戲(一) Hello Unity!Unity3D遊戲
- 為什麼戰棋遊戲又受到玩家們的青睞了?遊戲
- 2遊+機戰戰棋遊戲有沒有搞頭,看看《鋼嵐》做的如何?遊戲
- 《Unity 2D與3D手機遊戲開發實戰》簡介Unity3D遊戲開發
- 用C語言編寫小遊戲——“井字棋”C語言遊戲
- 用 Java 做個“你畫手機猜”的小遊戲Java遊戲
- 從零開始做一個SLG遊戲(三):用unity繪製圖形遊戲Unity
- 那些“一個人做的遊戲” 和它的玩家們遊戲
- 戰棋遊戲,火了,但沒完全火遊戲
- 怎樣為印度玩家做遊戲?遊戲
- 用Swoole來寫個聯機對戰遊戲呀!(四)遊戲結束判斷遊戲
- Java實現五子棋對戰小遊戲【完整版】Java遊戲
- 遊戲下沉,降服小鎮玩家?遊戲
- Android遊戲開發示例——彈幕+戰棋Android遊戲開發
- Python實現三子棋小遊戲Python遊戲
- [ 邏輯鍛鍊] 用 JavaScript 做一個小遊戲 ——2048 (初級版)JavaScript遊戲
- [ 邏輯鍛鍊] 用 JavaScript 做一個小遊戲 ——2048 (詳解版)JavaScript遊戲
- C語言五子棋小遊戲C語言遊戲
- 自學C 四月二十日_做了一個三子棋遊戲!!!遊戲
- Python寫個“點球大戰”小遊戲Python遊戲
- unity小恐龍模型控制Unity模型
- 我用 GitHub 9.8k 的 Go 語言 2D 遊戲引擎寫了個遊戲GithubGo遊戲引擎
- unity 開發2D坦克大戰教程 系列二Unity
- Unity也做遊戲了?而且還會開源?!Unity遊戲
- 套路解析:如何在遊戲中加入“副小玩法”提高使用者獲取和玩家留存遊戲
- Unity進階提升-2D遊戲跳躍手感最佳化(跳起下落)Unity遊戲
- UGC遊戲浪潮(三)做一個UGC遊戲與在UGC做一個遊戲GC遊戲
- 《天地劫》首測試玩:用現代戰棋重塑經典RPG遊戲遊戲
- 來做款重度小遊戲遊戲
- 用jQuery手寫一個小遊戲jQuery遊戲