焊接式隨機地牢元件

2021-09-19 14:45:14 字數 2152 閱讀 8849

地圖生成函式

先直接看最終效果圖吧

每次呼叫生成函式都將生成不同的房間組合。

可通過引數調整生成房間的廣度。

記錄所有房間到陣列中,方便後續操作

每次隨機地圖生成後,都提供字元地圖

圖中亮紅色的方塊,是表示需要封堵的門

隨機地牢的演算法有很多種,本人參考了網上的的一些演算法,但受限於艾蘭島編輯器,在資料結構,**邏輯上基本重寫了。

此外,一般的隨機地牢系統是連房間,過道都是通過**生成的(其實這個我也寫了乙個),但艾蘭島在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...