工具是一種簡單的方法來管理玩家可以在手中持有並在遊戲中使用的物品。它們可以是從武器(如劍)到食品等各種物品。
在本教程中,您將學習如何創建一個激光槍形狀的工具,當這個工具被裝備或啟用時,它會播放聲音效果。

創建工具
Tool 對象是 Roblox 中任何工具的基礎,因此您需要創建一個。通過將物件(如 Parts 和 MeshParts)添加到工具中來更改工具的外觀會更加容易,這些物件需在工作區中可見。
將一個 Tool 插入工作區並將其命名為 Blaster。

將一個 MeshPart 插入工具中。

將 MeshId 屬性設置為 rbxassetid://92656610。
將 TextureId 屬性設置為 rbxassetid://92658105。


工具需要一個名為 Handle 的部件供玩家握持。將 MeshPart 的名稱更改為 Handle。

儲存工具
工具可以作為 可收集工具 保留在遊戲世界中,或作為 起始工具 分配給所有玩家。
可收集工具
這把槍目前是 Workspace 的子項目,因此它將是可收集的。玩家可以通過接觸這個工具來撿起它,這使其成為角色模型的子項目;然後這個工具將被裝備並放入他們的快捷欄中。
在遊戲過程中,未裝備的工具被儲存在玩家的背包(Backpack)中,並在裝備時移動到他們的角色模型中。任何成為角色子項目的工具將自動裝備。


起始工具
將工具儲存在 StarterPack 中,當玩家進入遊戲或重生時,將把它放置在玩家的 Backpack 中。
將 Blaster 移動到 StarterPack 中的 Explorer。

播放遊戲以測試工具。單擊螢幕底部的快捷欄或按鍵盤上的 1 來裝備該工具。
工具屬性
位置 / 方向
工具的位置和方向可以使用 grip 屬性來更改。GripPos 更改握持位置,而 GripForward、GripRight 和 GripUp 影響旋轉。
目前player握住的是槍的中心位置,而不是握持部分。
將工具的 GripPos 屬性設置為 0, -0.4, 1.1。

啟動遊玩測試以測試工具。注意工具現在是以不同的位置被握住的。

之前 
之後
快捷欄圖標
預設情況下,工具的 名稱 將顯示在快捷欄圖標上。將圖標更改為工具的圖像是一種良好的做法。將工具的 TextureId 屬性設置為 rbxassetid://92628145。


工具提示
工具提示 是當鼠標懸停在快捷欄中的工具上時出現的小文本描述。它們通常包括工具的名稱和/或簡短的功能描述。將 ToolTip 屬性更改為 Blaster。

使用腳本與工具
工具有三個關鍵事件可以連接:Equipped,Unequipped 和 Activated。
| 事件 | 描述 |
|---|---|
| Equipped | 當工具被玩家裝備時觸發,例如當工具在快捷欄中被選擇時。 |
| Unequipped | 當工具被玩家卸下時觸發,例如當工具在快捷欄中被取消選擇時。 |
| Activated | 當工具被玩家啟用時觸發,例如當玩家左鍵單擊時。 |
這些方法僅在 LocalScripts 中有效,因為只有玩家的設備知道何時發生輸入,例如鼠標按鈕被點擊或螢幕被觸摸。
添加聲音
要查看這些事件的實際效果,您可以在它們觸發時播放聲音。首先,您需要創建要用於此的 Sound 對象。
在 Handle 中插入兩個 Sound 對象。
將一個聲音重命名為 Equip 並將其 SoundId 屬性設置為 rbxassetid://282906960。
將另一個聲音重命名為 Activate 並將其 SoundId 屬性設置為 rbxassetid://130113322。

添加代碼
以下示例代碼會在工具被裝備時播放 Equip 聲音,並在被啟用時播放 Fire 聲音。
在工具中插入一個 LocalScript 並將其命名為 ToolController。

將以下代碼行插入到腳本中。
local tool = script.Parentlocal function toolEquipped()tool.Handle.Equip:Play()endlocal function toolActivated()tool.Handle.Activate:Play()endtool.Equipped:Connect(toolEquipped)tool.Activated:Connect(toolActivated)測試槍的聲音效果,通過裝備並點擊來啟用工具。
現在您知道如何創建和編寫基本工具,嘗試創建其他簡單的工具,如手電筒或揚聲器。