如何做一個隨機徘徊的小蝙蝠

功能效果展示

 

運行環境

Win7,Win8,Win10

Reworld版本 體驗版

vc_redist.x64 運行環境

 

針對零基礎讀者的補充

下載安裝 Reworld對應版本

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

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

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

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

redist.x64下載鏈接

 

思路分析

想要製作一個隨機徘徊的物體,我們首先需要設置隨機徘徊的半徑和距離,以圓圈上的一個點作爲初始點,給物體一個速度,將隨機位移加到初始點上,得到新的位置。這樣我們就得到一個在圓圈內隨機徘徊運動的物體。

 

功能搭建

一、小蝙蝠搭建過程

工作區內創建一個自定義零件,在自定義零件下導入一個小蝙蝠的模型,取消錨定。如下圖所示:

 

二、核心功能搭建過程

自定義零件下創建一個服務器腳本。如下圖所示:

 

編寫服務器腳本如下:

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腳本代碼,用於編寫服務器邏輯。

 

好了,接下來我們開始遊戲,我們製作的小蝙蝠就會以隨機徘徊的形式在一個圓圈內移動。如果有什麼問題或者有更好的實現方式,大家可以在下方積極交流討論,我們也會參與進來和大家一起分享經驗,期望能和大家共同進步~~

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