隨機生成地圖磚塊作爲障礙

功能效果展示

 

運行環境

Win7,Win8,Win10

Reworld版本 體驗版

vc_redist.x64 運行環境

 

針對零基礎讀者的補充

下載安裝 Reworld對應版本

Reworld官網鏈接http://www.reworlder.com/

Reworld創作者之家論壇:http://bbs.reworlder.com

下載後安裝後註冊賬號打開空地圖

下載安裝 vc_redist.x64.rar運行環境

redist.x64下載鏈接

 

思路分析

在重啓世界編輯器中,我們可以利用服務器存儲存放一個地圖塊,創建一個表來存放克隆出的地圖塊,每次克隆都給地圖塊兩個隨機數的座標,並且修改地圖塊的顏色,這樣每次開始遊戲我們就有了一個隨機的地圖了。

 

功能搭建

一、地圖塊搭建過程

1.在工作區內創建一個零件,將其錨定,修改零件的屬性。零件的屬性如下圖所示:

2.把零件放入服務器存儲中。如下圖所示:

 

二、核心功能搭建過程

工作區內創建一個服務器腳本。如下圖所示:

編寫服務器腳本如下:

local a = ServerStorage.零件
local bTable = {}  -創建一個表
math.randomseed(tostring(os.time()):reverse():sub(1, 7))
coroutine.start(function()
    for i =1,100,1 do
        local x = math.random(1,21)		--X增加隨機數
        local z = math.random(1,16)		--Y增加隨機數
        local b = a:Clone()
        b.Parent = WorkSpace
        b.Name="零件"..i
        table.insert(bTable,b)
        for i=#bTable,#bTable,1 do
        if x ~= bTable[i].Position.x or z ~= bTable[i].Position.z then --遍歷表,如果X,Z座標不等於表內的X,Z座標
            b.Position = Vector3(x*2,1,z*2)	--給b的座標賦值
            for n=1,100,1 do
            local lx = math.random(1,100)
            if lx <= 50 then
                b.Color = Vector3(255,0,0)
            elseif lx <= 70 then
                b.Color = Vector3(255,255,0)
            elseif lx <= 80 then
                b.Color = Vector3(192,192,192)
            elseif lx <= 90 then
                b.Color = Vector3(0,255,64)
            elseif lx <= 100 then
                b.Color = Vector3(0,255,255)  --隨機修改b的顏色
            else
                return
            end
             end
          else
             table.remove(bTable,i)
             b:Destroy()
          end
         end
     end
end)

 

補充說明

1.什麼是工作區?

工作區中的對象是會被可視化顯示到3D場景中的,並且只有在工作區中的對象纔會發生物理交互。

 

2.什麼是服務器存儲?

此服務爲數據存儲區,數據存儲區中的零件等對象數據不會被實例化,不可見不進行物理交互;服務器存儲中數據只能被服務器腳本調用實例化,也只能服務器腳本存儲數據。

 

3.什麼是服務器腳本?

只會在服務器運行的Lua腳本代碼,用於編寫服務器邏輯。

 

4.爲什麼要使用服務器腳本?

    1.服務器腳本與客戶端腳本不同,客戶端執行的操作只有本地客戶端,也就是玩家自己有效。而服務器執行的操作不僅針對單人有效,還針對與服務器相連的所有客戶端同步生效。
    2.在多人遊戲中,如果這個對象的變化是針對一個人的,必須在客戶端腳本進行編寫;如果這個對象的變化是針對所有人的,那就必須在服務器腳本進行編寫。
    3.對於只能在客戶端腳本修改的對象,如何讓服務器知曉變化結果是很重要的。這裏採用傳統遊戲的製作流程,也就是在客戶端進行修改,把修改後的結果通過與服務器通信的方式發送到服務器,再通過服務器進行邏輯運算,把執行結果再同步給所有客戶端。

 

好了,接下來我們運行遊戲,就會發現我們的地圖塊隨機生成了一個五顏六色的地圖啦。如果有什麼問題或者有更好的實現方式,大家可以在下方積極交流討論,我們也會參與進來和大家一起分享經驗,期望能和大家共同進步~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章