功能效果展示
運行環境
Win7,Win8,Win10
Reworld版本 體驗版
vc_redist.x64 運行環境
針對零基礎讀者的補充
下載安裝 Reworld對應版本
Reworld官網鏈接:http://www.reworlder.com/
Reworld創作者之家論壇:http://bbs.reworlder.com
下載後安裝後註冊賬號打開空地圖
下載安裝 vc_redist.x64.rar運行環境
思路分析
想要製作一個隨機徘徊的物體,我們首先需要設置隨機徘徊的半徑和距離,以圓圈上的一個點作爲初始點,給物體一個速度,將隨機位移加到初始點上,得到新的位置。這樣我們就得到一個在圓圈內隨機徘徊運動的物體。
功能搭建
一、小蝙蝠搭建過程
在工作區內創建一個自定義零件,在自定義零件下導入一個小蝙蝠的模型,取消錨定。如下圖所示:
二、核心功能搭建過程
在自定義零件下創建一個服務器腳本。如下圖所示:
編寫服務器腳本如下:
math.randomseed(tostring(os.time()):reverse():sub(1, 7))
local a = script.Parent
--徘徊半徑
local wanderradius = 100
--徘徊距離
local wanderdistance = 100
--每秒加到目標的隨機距離的最大值
local wanderjitter = 100
--圓圈上一個點作爲初始點
local circletarget = Vector3.New(wanderradius*0.707,0,wanderradius*0.707)
--最大速度
local maxspeed = 5
function move()
local num = math.random(0,100)*0.01
local num1 = math.random(0,100)*0.01
--隨機位移
local randomdisplacement = Vector3.New((num-0.5)*2*wanderjitter,0,(num1-0.5)*2*wanderjitter)
--將隨機位移加到初始點上,得到新的位置
circletarget = circletarget + randomdisplacement
--由於新位置可能不在圓周上,因此需要投影到圓周上
local num2 = circletarget.normalized
circletarget = Vector3.New(wanderradius*num2.x,0,wanderradius*num2.z)
--轉換座標
local wandertarget = a.Velocity.normalized * wanderdistance + circletarget + a.Position
--計算預期速度
local desirevelocity = (wandertarget - a.Position).normalized*maxspeed
a.Velocity = desirevelocity - a.Velocity
end
GameRun.Update:Connect(move)
補充說明
1.什麼是工作區?
工作區中的對象是會被可視化顯示到3D場景中的,並且只有在工作區中的對象纔會發生物理交互。
2.什麼是自定義零件?
自定義零件是零件的一種形式,包含物理模擬的自定義網格。使用其他3D建模軟件創建的模型上傳到重啓世界編輯器時,被轉化爲遊戲引擎可以讀取的內部格式。
3.什麼是服務器腳本?
只會在服務器運行的Lua腳本代碼,用於編寫服務器邏輯。
好了,接下來我們開始遊戲,我們製作的小蝙蝠就會以隨機徘徊的形式在一個圓圈內移動。如果有什麼問題或者有更好的實現方式,大家可以在下方積極交流討論,我們也會參與進來和大家一起分享經驗,期望能和大家共同進步~~