體驗中的 Tools 是互動工具,用戶可以在會議中裝備,例如劍、火箭發射器和魔法棒。您可以在體驗中創建自訂工具、將它們放入您的體驗階層並且寫入指令碼來實現它們對您的用戶。
創建體驗工具
為建立任何體驗工具的第一步,您需要建立工具對象來包含工具的所有元素。然後您可以添加其他實例到工具對象包括零件和網格、音效和腳本提供功能。您還可以設置工具處理、
創建工具對象
您可以使用以下步驟創建新的工具對象:
在 Explorer 窗口中,將鼠標放在 Workspace 上,然後按一下 ⊕ 按鈕以顯示對象清單。
選擇 工具 在 互動工具 類別下。
添加零件或網格
在創建工具對物件後,您需要添加 Parts 或 MeshParts 到工具模型或 在工具上建立物品倉庫 無需零件和網格。 與其他模型類似,在體驗中工具
如果您想要創建工具,而不添加零件或網格,您可以 作為道具創建項目 。
設定工具處理器
要讓用戶能夠攜帶工具,您需要設置一個 Part 並將其命名為 Handle 來附在用戶的手上。下面的例子顯示了一個魔杖,其三個部分是發光的尖端、主身體和紅色的手把。當用戶裝備魔杖時,他們會
請確認你只有一個名為 Part 的 Handle 。如果你命名多個 Parts 為 1> Handle1>,工具將隨機選擇其中一個作為手提點,可能會導致用戶持有劍而不是刀鞘。
調整工具握持方向
如果您的工具的握把方向不正確,例如拖在地上或向後面,您可以通過調整 握把 屬性在 外觀 類別的 Appearance 窗口中調整。
每種工具的理想握持方向都不同,因此您需要改變握持前方 GripForward 、 GripRight 和 GripUp 屬性,直到您的工具的握持看起來正確。下列示例顯示了可能的錯誤和正確的握持方向。魔杖的魔杖示示了可能的錯誤和正確的握持方向。
您也可以啟用使用者角色用 GripPos 屬性從他們的手中對工具進行補償。這可能會對於製作用戶應該放置在用戶肩上的工具有所幫助。
自訂工具圖示
使用者擁有的工具會存放在他們的 Backpack 中。使用者可以在背包上的 action bar 中查看每個工具的圖示:
在工具的 屬性 視窗中,使用以下屬性來自訂工具在行動條中的外觀:
- TexturabilityID — 工具圖示。設定此屬性的圖像 ID 方式與裝飾按鈕和圖像按鈕相同。
- 工具提示 — 工具提示名稱。
啟用並禁用用戶放棄工具
按預設值,使用者可以在 Windows 上按下 返回方塊 鍵以放棄工具,或在 Mac 上按下 刪除 以放棄工具。您可以設定工具的 CanBeDropped 屬
作為道具創建工具
您也可以作為道具或網格無零件或網格作為道具,以在體驗中等待用戶輸入,例如魔法法術,用戶角色可以點擊其他人或觸摸屏幕來施放它。道具或網格道具不需要手柄,因此您需要檢查工具的 需要手柄 屬性。
添加工具到您的體驗
完成設置您的內容體工具後,您需要將其放置在您的體驗的物件層級的正確區域。 您放置工具的方式取決於它的預期使用。
預設開始工具
如果您想要所有用戶都能從工具欄中立即開始使用工具,請將它放在 StarterPack 文件夾內。當任何用戶重新生成時,系統會將工具複製到他們的背包中。
收藏工具
如果您想要允許使用者在移移動工具時收集工具,您可以將工具放置在 工作區 中的 Explorer 階層中。例如,您可以將超級火箭發射器放置在體驗世界的難以達到區域。
已獲得並購買的工具
如果您想將某個工具設定為獎勵,當使用者做某些特殊或提供它作為在體驗商商店 商家中出售時,將工具放入 服務器存儲 裡的 Explorer 階層,這可以將工具複製到使用者的背包,在正確的時間。
添加工具效果
在為您的體驗添加工具後,您可以添加指令碼,讓使用者使用工具來執行特殊效果。
工具特定事件
您可以使用以下四個工具指定條件,表示工具和用戶輸入它的狀態,並在您的工具指令碼中使用:
Tool:Equipped() : 發生於用戶從背包中選擇工具時。
Tool:Unequipped() : 發生用戶放下工具或切換工具時發生。
Tool:Activated() : 發生時玩家開始啟動工具(點擊、點擊或按下 A 在遊戲控制器上)。
Tool:Deactivated() : 發生時,使用者停止啟動輸入 (釋放按鈕或觸摸).
雖然您可能不需要所有四種條件來設計工具,但您可以使用以下代碼指令作為基本工具指令樣板:
local tool = script.Parent
local function onEquip()
print("The tool is now equipped.")
end
local function onUnequip()
print("The tool is now unequipped.")
end
local function onActivate()
print("The tool is now activated.")
end
local function onDeactivate()
print("The tool is now deactivated.")
end
tool.Equipped:Connect(onEquip)
tool.Unequipped:Connect(onUnequip)
tool.Activated:Connect(onActivate)
tool.Deactivated:Connect(onDeactivate)
此代碼示例假設腳本是第一層子裡的工具對物件的子孫。如果腳本在其他地方,請調整第一條線路(值為 tool )指向核心工具對物件。
添加基本指令碼
下面的例子顯示了在服務器上添加 Script 以讓用戶可以裝備一支魔杖,以便在白天和夜晚切換時間:
在 Explorer 窗口中,將鼠標對準工具對象,然後按一下 ⊕ 按鈕以插入 Script。
複製以下代碼,並將它貼入你的 Script。
local Lighting = game:GetService("Lighting")local tool = script.Parentlocal function onActivate()if Lighting.ClockTime >= 8 and Lighting.ClockTime < 16 thenLighting.ClockTime = 20elseLighting.ClockTime = 8endendtool.Activated:Connect(onActivate)使用工具來測試您的體驗,然後點擊屏幕上的任何位置來切換白天和夜晚:
工具實現的不同類型的指令碼
一些工具只需要在服務器上執行 Script 即可實現,例如上一個範例,但大多數工具都需要在服務器上執行 Script 和客戶端上執行 LocalScript,其中每個都負責工具的特定方面。
在添加您的腳本之前,請確認每種腳本輸入之間的核心區別:
- 指令碼 管理所有用戶可以看到的整個體驗世界中的變更,例如解鎖門和射擊箭頭。
- 本地指令碼 管理只在使用者的裝置上發生的事件,例如偵測到碰觸或點擊屏幕的位置。
這裡有一些使用本地指令或伺服器指令碼令管理的範例工具:
工具 | 本地指令碼 | 伺服器指令碼 |
---|---|---|
創作者魔杖 | 偵測玩家是否在屏幕上觸摸或點擊。 | 在遊戲世界中的某個位置建立新零件,讓玩家觸摸或點擊。 |
隱形斗篷 | 在裝備帽子時暫時讓其他玩家隱形,而不會影響其他玩家。 | |
巨型弓 | 偵測玩家啟用工具的時間 (在啟用和關閉之間的時間)。 | 發射一個魔法箭頭,力量大或小,取決於偵測到的啟動時間。 |
有關不同的指令類型,請參閱 指令類型。
排障提示
在 Studio 中可能沒關係,但在現實 Roblox 體驗中可能會有問題。如果發生這個情況,請使用以下方法進行排閱:
- 確認每個 Script 和 LocalScript 只處理正確的事情。
有關更多有關 RemoteEvents 的資訊,請參閱 遠端事件和回潮。