用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遊戲事件
- XNA開發一個2D的小遊戲遊戲
- 用Unity做個遊戲(九) - 服務端架構Unity遊戲服務端架構
- 用 Java 做個“你畫手機猜”的小遊戲Java遊戲
- Unity 2D遊戲製作Unity遊戲
- 【Unity】(2D)物體拖拽Unity
- 用Unity做個遊戲(五) – 編輯器擴充套件Unity遊戲套件
- 用Unity做個遊戲(十) - 完結篇,內容補全Unity遊戲
- [Unity3D] 2D畫素遊戲(一) Hello Unity!Unity3D遊戲
- 用Unity做個遊戲(一) - 建立專案時需要注意的點Unity遊戲
- [ 邏輯鍛鍊] 用 JavaScript 做一個小遊戲 ——2048 (初級版)JavaScript遊戲
- [ 邏輯鍛鍊] 用 JavaScript 做一個小遊戲 ——2048 (詳解版)JavaScript遊戲
- Unity 2D遊戲開發快速入門第1章建立一個簡單的2D遊戲Unity遊戲開發
- 從零開始做一個SLG遊戲(三):用unity繪製圖形遊戲Unity
- 用GDX寫個安卓小遊戲安卓遊戲
- 在Unity中實現2D光照系統Unity
- socket.io+angular.js+express.js做個聊天應用(四)AngularJSExpress
- 為什麼戰棋遊戲又受到玩家們的青睞了?遊戲
- Unity3d主城玩家位置同步Unity3D
- 來做款重度小遊戲遊戲
- 用 JavaScript 寫一個卡片小遊戲JavaScript遊戲
- 用jQuery手寫一個小遊戲jQuery遊戲
- unity 開發2D坦克大戰教程 系列二Unity
- UNITY3D 2D物流流體外掛下載|Liquid Physics 2DUnity3DUI
- 開啟瀏覽器,不用寫程式碼,做個小遊戲瀏覽器遊戲
- Unity控制把執行Unity
- 用 Unity 做個遊戲(八) - 客戶端邏輯結構和網路同步機制Unity遊戲客戶端
- Kunpo COO和《橘貓偵探社》主策分享:如何做玩家接受度高的小遊戲?遊戲
- Unity3D 2D實戰遊戲開發Unity3D遊戲開發
- 開發一個最簡單的Cardboard虛擬現實應用(四)做一個Cardboard第一人稱控制器
- [Unity][Camera][2D][優化]2D攝像機可視範圍外不播放動畫Unity優化動畫
- Unity遊戲示例來了,用Unity開源遊戲資源做遊戲,遊戲開發不再難!Unity遊戲開發