Alat Tools dalam permainan adalah alat interaktif yang dapat dipakai oleh pemain dalam sesi, seperti senjata, tongkat sihir, senter, kunci, dan lainnya. Anda dapat merancang alat dan menyertakannya dalam inventaris pemain atau menempatkannya di seluruh dunia sebagai barang yang dapat diambil.
Buat alat dalam permainan
Objek Tool adalah dasar dari setiap alat di Roblox, jadi Anda perlu membuatnya. Lebih mudah untuk melihat bagaimana alat tersebut terlihat dengan merancangnya di Workspace, dan kemudian Anda dapat menjadikannya sebagai item inventaris atau item yang diperoleh/dibeli.
Dengan Tool baru yang dipilih, akses jendela Properties dan sesuaikan bagaimana alat akan muncul di inventaris pemain:
- TextureId — Menentukan ID aset gambar untuk alat di inventaris pemain.
- ToolTip — Nama tooltip saat mengarahkan kursor untuk alat di inventaris pemain.

Tentukan apakah alat tersebut akan menjadi alat fisik dalam lingkungan 3D (paling umum) atau alat non-fisik yang sederhana menempati inventaris pemain dan merespons input mereka.
Alat fisik
Setelah membuat instance Tool untuk alat fisik, Anda perlu menambahkan bagian/mesh untuk membentuk tampilannya di dunia 3D. Anda juga perlu menyertakan pegangan yang dipegang oleh karakter pemain grip.
Tambahkan bagian/mesh
Alat dalam permainan bisa terdiri dari satu atau lebih Parts dan/atau MeshParts. Jika Anda membangun alat dari beberapa bagian, ingatlah untuk menghubungkannya semua menggunakan WeldConstraints atau kendala mekanis sehingga alat tetap utuh sebagai satu kesatuan saat pemain membawanya.

Atur pegangan
Untuk memungkinkan pemain membawa alat, salah satu bagian dari alat perlu dinamai Handle. Di sinilah alat akan terhubung ke bagian RightHand model karakter (R15) atau Right Arm bagian (R6).
Jika alat terdiri dari hanya satu MeshPart, cukup beri nama bagian itu Handle. Jika tidak, Anda dapat menyertakan bagian terpisah yang disebut Handle sebagai anak langsung dari induk Tool dan kemudian mengaitkannya ke bagian lain dengan menggunakan WeldConstraint atau kendala mekanis.
Contoh berikut menunjukkan alat dengan tiga instance: mesh Handle, RopeConstraint, dan mesh lentera yang tergantung dari tali.

Sesuaikan posisi/orientasi pegangan
Properti Grip pada alat adalah CFrame yang menentukan bagaimana posisi dan orientasi alat relatif terhadap karakter yang memegangnya.

Karena posisi/orientasi pegangan yang ideal berbeda untuk setiap alat, Anda perlu bereksperimen dengan nilai-nilai sampai pegangan alat Anda terlihat benar. Contoh berikut menunjukkan pengaturan Grip yang mungkin salah dan benar untuk lentera yang menggantung:


Alat non-fisik
Sebuah Tool non-fisik hanya menempati inventaris pemain dan merespons input mereka. Misalnya, sebuah permainan peran mungkin menampilkan serangkaian mantra sihir yang dapat "dilemparkan" pemain melalui inventaris mereka.

Alat non-fisik tidak memerlukan komposisi 3D dan tidak menggunakan bagian Handle, jadi Anda harus menonaktifkan properti RequiresHandle pada alat tersebut:

Tambahkan alat ke dalam permainan
Setelah Anda membuat alat dalam permainan Anda, Anda perlu menempatkannya di area yang benar dalam hierarki Explorer. Di mana Anda menempatkan alat dalam hierarki tergantung pada penggunaan yang dimaksudkan.
Inventaris pemain
Jika Anda ingin semua pemain memulai dengan alat di inventaris mereka, tempatkan alat di dalam wadah StarterPack. Saat seorang pemain muncul, sistem menyalin alat ke Backpack mereka. Dari sana, pemain dapat mengenakan alat dengan mengklik ikon inventarisnya atau dengan menekan tombol pintasan yang terkait seperti 1 atau 2.

Perhatikan bahwa alat disalin ke inventaris pemain (Backpack) dalam urutan mereka ditambahkan ke StarterPack. Untuk pengaturan urutan yang lebih terkendali, Anda dapat menambahkan LocalScript ke StarterPack yang sementara memindahkan alat ke ReplicatedStorage lalu memindahkan ulang ke Backpack dalam urutan yang ditentukan dalam tabel order.
Reorder Inventorylocal ReplicatedStorage = game:GetService("ReplicatedStorage")local order = {"WaterSpell", "FireSpell", "AirSpell", "EarthSpell"}local backpack = script.Parentfor _, item in backpack:GetChildren() doif item:IsA("Tool") thenitem.Parent = ReplicatedStorageendend-- Pindahkan ulang alat ke backpack dalam urutan yang ditentukanfor i = 1, #order dolocal tool = ReplicatedStorage:FindFirstChild(order[i])if tool thentool.Parent = backpackendend
Alat koleksi
Jika Anda ingin mengizinkan pemain mengumpulkan alat fisik saat mereka menjelajahi dunia 3D, tempatkan alat di Workspace seperti objek 3D biasa. Alat yang dikumpulkan akan secara otomatis dipakai dan ditambahkan ke dalam inventaris pemain (Anda tidak perlu menambahkan deteksi tabrakan ekstra agar karakter dapat mengambil alat).
Seperti yang disebutkan di bagian tambahkan bagian/mesh, bagian-bagian alat biasanya tidak boleh Anchored, karena karakter pemain akan terjebak di tempat saat mereka mengambil atau mengenakan alat yang terikat. Namun, jika Anda ingin mengaitkan alat koleksi ke tempat tertentu di dunia 3D, seperti mengapung sedikit di atas tanah, Anda dapat menambahkan Script berikut ke alat untuk membebaskan bagiannya saat dikumpulkan.
Unanchor Tool on Equip/Collect
local tool = script.Parent
tool.Equipped:Connect(function()
for _, part in tool:GetDescendants() do
if part:IsA("BasePart") and part.Anchored then
part.Anchored = false
end
end
end)
Alat yang diperoleh/dibeli
Jika Anda ingin menetapkan alat sebagai penghargaan ketika pemain menyelesaikan tugas, atau menawarkan alat untuk dijual di toko dalam permainan, tempatkan alat tersebut di dalam ReplicatedStorage. Dari sana, Anda dapat Clone() sebuah alat ke Backpack pemain pada waktu yang tepat.

Clone Tool to Player's Inventorylocal Players = game:GetService("Players")local ReplicatedStorage = game:GetService("ReplicatedStorage")local player = Players.LocalPlayerlocal backpack = player:WaitForChild("Backpack")-- Buat klon dari alatlocal tool = ReplicatedStorage:FindFirstChild("WaterSpell")if tool thenlocal clone = tool:Clone()clone.Parent = backpack -- Menambahkan klon ke backpack pemainend
Implementasikan efek alat
Setelah menambahkan alat ke permainan Anda, Anda dapat mengimplementasikan skrip untuk memungkinkan pemain menggunakan alat mereka dan melakukan aksi yang diinginkan. Peristiwa spesifik alat berikut menunjukkan status alat dan input pemain terhadapnya.
- Equipped() — Ditembakkan saat pemain memilih alat dari backpack mereka.
- Unequipped() — Ditembakkan saat pemain beralih alat atau menjatuhkan alat.
- Activated() — Ditembakkan saat pemain mulai mengaktifkan alat (mengklik, mengetuk, atau menekan pemicu belakang kanan pada pengontrol game).
- Deactivated() — Ditembakkan saat pemain menghentikan input aktivasi (melepas tombol atau sentuhan).
Tool Events Template
local tool = script.Parent
local function onEquip()
print(tool.Name, "alat dilengkapi")
end
local function onUnequip()
print(tool.Name, "alat tidak dilengkapi")
end
local function onActivate()
print(tool.Name, "alat diaktifkan")
end
local function onDeactivate()
print(tool.Name, "alat dinonaktifkan")
end
tool.Equipped:Connect(onEquip)
tool.Unequipped:Connect(onUnequip)
tool.Activated:Connect(onActivate)
tool.Deactivated:Connect(onDeactivate)
Peristiwa alat hanya terjadi di LocalScripts sisi klien karena hanya perangkat pemain yang tahu kapan input terjadi. Oleh karena itu, sebagian besar alat memerlukan baik LocalScript maupun Script sisi server di mana masing-masing menangani beberapa aspek perilaku alat dan RemoteEvent meneruskan informasi dari klien ke server (lihat peristiwa remote dan callbacks untuk informasi lebih lanjut).
Berikut adalah contoh alat dan perilakunya yang dikelola oleh baik LocalScript atau Script:
| Alat | LocalScript | Script |
|---|---|---|
| Tongkat Pembuat | Mendeteksi di mana pemain mengaktifkan alat (Activated()). | Menciptakan bagian baru di lokasi dalam dunia 3D di mana pemain menyentuh atau mengklik. |
| Jubah Ketidakjelasan | Mendeteksi kapan pemain mengenakan alat (Equipped()) atau melepas alat (Unequipped()). | Menjadikan pemain tak terlihat bagi semua pemain lain selama jubah dikenakan dan mengembalikan pemain ke tampilan penuh saat jubah dilepas. |
| Busur Mega | Mendeteksi berapa lama pemain mengaktifkan alat (waktu antara Activated() dan Deactivated()). | Menembakkan panah sihir dengan kekuatan lebih besar atau lebih kecil, tergantung pada waktu aktivasi yang terdeteksi. |
