地圖生成函式
先直接看最終效果圖吧
每次呼叫生成函式都將生成不同的房間組合。
可通過引數調整生成房間的廣度。
記錄所有房間到陣列中,方便後續操作
每次隨機地圖生成後,都提供字元地圖
圖中亮紅色的方塊,是表示需要封堵的門
隨機地牢的演算法有很多種,本人參考了網上的的一些演算法,但受限於艾蘭島編輯器,在資料結構,**邏輯上基本重寫了。
此外,一般的隨機地牢系統是連房間,過道都是通過**生成的(其實這個我也寫了乙個),但艾蘭島在0.12版本中,提供了焊接功能(英文叫baking,就是一般建模軟體裡的「烘培」功能),如果將房子,走廊都焊接為實體後,生成演算法最消耗資源的建立實體,就能大大降低消耗。
這個元件的隨機地牢演算法不是完美演算法,但個人認為不完美的隨機演算法,才是實用的演算法
本次元件本質來說,只提供了核心演算法+思路,元件拖入遊戲時,會發現許多大的建築焊接方塊,這些都是為了演示用的。
製作房間模板
實體模板吸入房間模板
在實體模板中呼叫 元件的 房間模板初始化函式
遊戲開始-> 呼叫地圖生成函式
每個房間的中心點必須在左下角頂點。
每次在選中要焊接的物體(或者編輯焊接時),按住ctrl,滑鼠單擊左下角方塊2次,此時左下角方塊成為所有方塊中最後乙個選中的物品,焊接後,中心點就是最後選中物體的中心點(包括旋轉)
必須保證焊接後的房間旋轉都是 0,0,0(這個也與最後一塊選中物體的旋轉有關)
在拖入的元件中,各位會看到許多焊接好的地基樣子的方塊,這些示例是展示也是建議,各位在製作房間時,不同方向的門都需要單獨製作要給房間。
元件只需要關注2個函式:房間模板初始化函式,生成地圖函式。
2個函式都在隨機地牢系統 中
在實體模板中呼叫(必須保證實體模板中已吸入搭建好的房間)
引數引數
型別格式
是否必須
說明room_template
邏輯必須
按圖直接使用此物件
e-co
數值非必須
東邊的門距離房間右下角方塊數,不填表示此房間在這個方向上沒有門
s-co
數值非必須
南邊的門距離房間左下角方塊數,不填表示此房間在這個方向上沒有門
w-co
數值非必須
西邊的門距離房間左下角方塊數,不填表示此房間在這個方向上沒有門
n-co
數值非必須
北邊的門距離房間左上角方塊數,不填表示此房間在這個方向上沒有門
room-size
必須房間左上角在x,z軸上與左下角的方塊數
引數引數
型別格式
是否必須
說明地牢廣度
數值必須
控制房間生成層數,數值越大,房間生成越多,最大廣度必然只生成乙個門的房間
起始房間方向
字元填 e,s,w,n中的乙個,或者不填
非必須不填則隨機乙個方向
起始房間座標x
數值必須
生成房間時的方塊數
起始房間座標x
數值必須
生成房間時的方塊數
長度比例
數值必須
建築物地基的方塊長度
注:長度比例可以理解為地基使用哪個尺寸的方塊,比如313, 意思就是3個單位長度,1個單位高度,3個段位寬度的方塊,每個單位為0.375
隨機系統在計算時,都是按照1個單位來計算的。後續實際生成時,都會計算座標*長度比例 * 0.375
Unity 隨機地牢開發日記 1
本文章首發於我的個人部落格,希望大家多多支援!hi this is showhoop studio 你即將看到的是我的unity隨機地牢遊戲的第一篇開發日記。這個遊戲的靈感 於小白的大冒險,我借鑑了它的主要玩法 也就是隨機地牢,來作為練習,提高自己的遊戲開發技術,同時也豐富一下自己的作品集。在這一篇...
精密貼片元件焊接心得
精密貼片元件焊接方法 1.先在pcb的焊盤上錫,並把焊錫抹向端點處 即引腳的外沿端點 目的是讓元件放入焊盤後,多出的焊錫既不會影響元件的平放,也有利於 引腳上錫時,保證引腳的外端的連通性,因為往往引腳的外端是最容易上錫的,同時也要注意,不能在焊盤上留下過多的焊錫,多餘的一定要抹掉,否則很有可能導致相...
函式式元件
函式式元件需要將functional設為true,它沒有狀態,沒有上下文 單檔案中函式式元件的實現 元件註冊中函式式元件的實現 vue.component my component 為了彌補缺少的例項 提供第二個引數作為上下文 render function createelement,contex...