日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

从零点五开始用Unity做半个2D战棋小游戏(二)

發布時間:2024/9/3 编程问答 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 从零点五开始用Unity做半个2D战棋小游戏(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

好久不見。

這是第18篇與游戲開發有關的文章。

| 寫在最前

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

預計將分為以下幾篇(調整后):

1、創建戰場 (已完成)

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

2、添加戰場地圖功能

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

3、添加對戰雙方

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

4、添加戰場UI

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

5、擴展作戰單位

豐富作戰單位的類型,添加職業,并加入若干不同類型的技能。

6、擴展戰場地圖

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

7、規范戰斗配置

可以通過規范化的數據結構配置戰場、職業、技能、道具等。

本次的主題是:添加戰場地圖功能。


| 目標

實現一些后面所需的操作地圖的基礎功能,如:

1、點擊戰場后高亮顯示被點中的格子;

2、點擊兩個位置實現從A到B的導航并在地圖上顯示路徑;

3、設定一個移動半徑,點中格子后顯示出可移動范圍。

實現后的效果如下圖:

點擊格子變紅

紅色向藍色導航(黃色為路徑,青色為探索過但沒有采用的格子)

半徑為2個單位的可移動范圍


| 點擊格子變紅

我采用的方法是:

1、獲取屏幕點擊位置的世界坐標,并將其轉換到格子的Root節點下;

2、用這個坐標推斷出點擊格子所在的行、列范圍;

3、遍歷這些推測格子的中心,找到距離最近的格子,即為點中的格子。

點擊屏幕后推斷的九個格子

| 調整地圖瓦片渲染器的位置

為了方便計算格子的位置,這里調整了瓦片渲染器的位置,保證它在地塊對象的中心,這樣在設置、獲取、計算坐標時,少一步轉換的操作,也更容易被理解。

調整后地塊對象坐標歸零時正好顯示為瓦片的中心


| 導航

這里采用的導航是A星算法,網上的介紹很多,就不再贅述了。在這只對六邊形地圖上兩格之間最短移動距離的計算做個簡單說明。

六邊形格子的路程計算

與四邊形地圖差別不大,六邊形地圖也可理解為先做行移動,再做列移動。但它的差異是:在做行移動的同時,其列也可以在一定范圍發生變化,因為它可以斜著走。

單元格坐標在僅計算行移動量的同時,列可移動范圍是一個三角形。

起始點所在奇、偶行的差別,對覆蓋三角形區域的計算是有影響的。

注:黑字表示格子的列,紅字表示當前格子與出發格子的列差值。

綜上,六邊形地圖下兩格子之間的最近路程可以理解為:從起始位置先縱向移動,如果移動到與目標同行,但是目標格子又不在可到達格子范圍內的話,再橫向移動若干單位即可,如圖:

需要注意的是,奇數、偶數行與首行是否“縮進”了半個格子有關。

| 調整數據結構

導航功能交給一個新的工具類:地圖導航器來完成,但是原來地圖中格子信息是直接保存在戰斗數據對象中,現在我將地圖數據從戰斗數據中拆分出來,便于導航器集中處理數據。

舊 戰斗數據的結構

新 戰斗數據結構

調用接口


| 根據半徑顯示可移動范圍

預設半徑顯示可移動范圍,也可轉換為二手手游賬號買賣平臺在進行行偏移的同時,求列覆蓋的最小和最大值。

如在計算移動半徑為2的覆蓋區域時,假設從中心點開始,推算下方的區域,本質上是:

1、行移動量為0時,覆蓋縱坐標偏移[-2~2]的區域。

2、行移動量為1時,覆蓋縱坐標偏移[-1,0] + [-1, 1]的區域,其中[-1, 2]為行移動量為1的格子覆蓋區間,[-1, 1]為再橫向移動一單位時的偏移增量。

3、行移動量為2時,覆蓋縱坐標偏移[-1, 1]的區域。

在計算偏移區域時,使用了上述提到的計算兩格子之間距離的方法。


| 寫在最后

至此,添加戰場地圖的基本功能篇就介紹到這里,詳細代碼可以移步Github下載。

感謝您能讀到這里。

愿不忘初心。

下回見。

總結

以上是生活随笔為你收集整理的从零点五开始用Unity做半个2D战棋小游戏(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。