通過Reworld製作簡單的吸附功能

運行環境

Win7,Win8,Win10 win64

Reworld版本 體驗版

 

針對零基礎讀者的補充

下載安裝 Reworld對應版本

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

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

 

思路分析

以人物實時座標爲中心點來檢測周圍一定範圍的物體,並讓物體向人物方向移動,做到一種吸附的效果。

功能效果展示

場景零件搭建

一、搭建過程

工作區創建零件並添加服務端腳本

打開服務端腳本,代碼如下:

local item = script.Parent

item.TriggerEnter:Connect(function(player)

    if player:IsClass("Avatar") then

        item:Destroy()

    end

end)

代碼說明:此代碼爲零件檢測碰撞,碰撞到人物時自行銷燬

寫好代碼後我們在工作區中多複製幾個這樣的零件

移動的核心功能

一、搭建過程

客戶端最先加載界面添加客戶端腳本

代碼如下:

wait(2) -- 等待2

local person = Players:GetLocalPlayer() -- 獲取本地玩家

 

function MyUpdate()

    local pos = person.Avatar.Position   --獲取玩家實時座標

    local minPoint = pos - Vector3.New(10,10,10)

    local maxPoint = pos + Vector3.New(10,10,10)

    local ignoreInstance = WorkSpace.新底板

    local maxParts = 20

    local list = WorkSpace:FindPartsInZone(minPoint,maxPoint,ignoreInstance,maxParts)--檢測以玩家爲中心的20*20*20的正方體

    if #list > 0 then

        for k,v in pairs(list) do

            if v then

                if v:IsClass("Part") then

                    v.Color = Vector3.New(255,0,0)

                    --計算物體和人物的座標向量並給物體增加速度

                    v.Velocity = Vector3.New(5*(person.Avatar.Position.x - v.Position.x),5*(person.Avatar.Position.y - v.Position.y) ,5*(person.Avatar.Position.z -v.Position.z))

                end

            end

        end

    end

end

 

local function coroutineUpdate()--每隔0.1秒檢測

    while true do

        coroutine.wait(0.1)

        MyUpdate()

    end

end

 

coroutine.start(coroutineUpdate)

這樣一來,簡單的吸附功能就做好了,大家來試試吧~

二、補充說明

1.什麼是工作區

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

服務對象

不可創建

不可複製

不可刪除

2.什麼是服務器腳本?

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

      

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

   因爲碰撞檢測只能在服務器腳本使用

 

4.什麼是客戶端最先加載?

  • 服務對象。 
    用於存儲客戶端腳本和重要對象,其內容先於其他任何內容複製到所有客戶端(優先執行)。
  • 不可創建。 
    不能用
    RWObject.Create()函數創建此對象。
  • 不可刪除。 
    不能用
    Destroy()函數刪除此對象。
  • 不可複製。 
    不能用
    Clone()函數複製此對象。

 

5.什麼是客戶端腳本?

只會在客戶端執行的腳本,執行的邏輯和表現也只會在本地客戶端展現;可在以下幾個文件目錄下自動執行,客戶端腳本在工作區下不會自動執行,需要放在以下對象裏面: 

1. 客戶端最先加載 。
2. 
工作區中的角色模型玩家初始化中的角色初始化腳本,在運行後會自動移動到角色模型下。 
3. 
玩家列表中的玩家玩家初始化中的玩家初始化腳本,在運行後會自動移動到玩家下 
4. 
玩家玩家界面界面初始化的腳本,在運行後會自動移動到玩家界面下。 
5. 玩家的
揹包,例如工具裏面的。

 

 

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