Oyun içi Tools, oyuncuların oturumlarda donatabileceği etkileşimli araçlardır; bunlar arasında silahlar, sihirli değnekler, el fenerleri, anahtarlar ve daha fazlası bulunmaktadır. Araçları tasarlayabilir ve bunları bir oyuncunun envanterine dahil edebilir veya dünyada öğe olarak yerleştirebilirsiniz.
Oyun içi bir araç oluşturun
Tool nesnesi, Roblox'taki herhangi bir aracın temelini oluşturur, bu yüzden bir tane oluşturmanız gerekecek. Bir aracın nasıl göründüğünü önizlemenin en kolay yolu, onu Workspace içinde tasarlamaktır; daha sonra bunu bir envanter öğesi veya kazanılan/satın alınan bir öğe haline getirebilirsiniz.
Yeni oluşturulan Tool seçiliyken, Özellikler penceresine erişin ve aracın oyuncunun envanterinde nasıl görüneceğini özelleştirin:
- TextureId — Oyuncunun envanterinde aracın görüntü varlık kimliğini belirtir.
- ToolTip — Oyuncunun envanterinde aracın üzerine geldiğinde görünen ipucu adı.

Aracın 3D ortamda fiziksel bir araç (en yaygın) mı yoksa sadece bir oyuncunun envanterinde yer alan ve onların girdisine yanıt veren bir fiziksel olmayan araç mı olacağına karar verin.
Fiziksel araç
Fiziksel bir araç için Tool örneği oluşturduktan sonra, 3D dünyadaki görünümünü oluşturmak üzere parçalar/meshler eklemeniz gerekecek. Ayrıca, oyuncu karakterlerinin tutması için bir tutacak da dahil etmeniz gerekecek.
Parçalar/meshler ekleyin
Oyun içi araçlar bir veya daha fazla Parts ve/veya MeshParts içerebilir. Aracı birden fazla parçadan oluşturuyorsanız, aracı birlikte tutmak için hepsini WeldConstraints veya diğer mekanik kısıtlamalar ile birleştirmeyi unutmayın, böylece oyuncu aracı taşırken bir bütün olarak kalır.

Tutacak ayarlayın
Oyuncuların araçları taşımalarını sağlamak için, aracın bir kısmı Handle olarak adlandırılmalıdır. Bu, aracın karakter modelinin RightHand parçasına (R15) veya Right Arm parçasına (R6) eklenileceği yerdir.
Eğer araç sadece bir MeshPart'tan oluşuyorsa, bu parçayı Handle olarak adlandırın. Aksi takdirde, Tool ana nesnesinin doğrudan çocuğu olarak adlandırılmış ayrı bir Handle parçası ekleyebilir ve ardından bunu başka bir parçaya WeldConstraint veya mekanik kısıtlama ile bağlayabilirsiniz.
Aşağıdaki örnek, bir tutacak mesh, bir RopeConstraint ve ipten asılı bir fener mesh'i olan bir aracı göstermektedir.

Kavrama konumunu/yönünü ayarlayın
Aracın Grip özelliği, aracın karaktere nasıl konumlandığını ve yönlendirildiğini belirten bir CFramedir.

Her araç için ideal kavrama konumunun/yönünün farklı olduğunu göz önünde bulundurarak, aracınızın kavraması doğru görünene kadar değerlerle deneme yapmanız gerekecektir. Aşağıdaki örnek, asılı fener için olası yanlış ve doğru Grip ayarlarını göstermektedir:


Fiziksel olmayan araç
Fiziksel olmayan bir Tool, yalnızca bir oyuncunun envanterini kaplar ve onların girdilerine yanıt verir. Örneğin, bir rol yapma oyunu, oyuncuların envanterleri aracılığıyla "yapabilecekleri" bir dizi sihirli büyü içerebilir.

Fiziksel olmayan araçların herhangi bir 3D bileşimine ihtiyaç yoktur ve bir Handle parçası kullanmaz, bu nedenle aracın RequiresHandle özelliğini devre dışı bırakmalısınız:

Araçları oyuna ekleme
Oyun içi aracınızı oluşturduktan sonra, onu Explorer hiyerarşisinin doğru alanına yerleştirmeniz gerekir. Araçlarınızı hiyerarşide nereye yerleştireceğiniz, amaçladığınız kullanımına bağlıdır.
Oyuncu envanteri
Eğer tüm oyuncuların envanterinde bir araçla başlamasını istiyorsanız, aracı StarterPack konteynerin içine yerleştirin. Herhangi bir oyuncu doğduğunda, sistem aracı onların Backpack kısmına kopyalar. Buradan, oyuncu aracı envanter simgesine tıklayarak veya 1 veya 2 gibi ilgili kısayol tuşuna basarak donatabilir.

Araçların, StarterPack'e eklendiği sırayla oyuncunun envanterine (Backpack) kopyalandığını unutmayın. Daha kontrollü bir sıralama için, StarterPack'e bir LocalScript ekleyebilirsiniz; bu, araçları geçici olarak ReplicatedStorage'a taşır ve ardından belirtilen order tablosundaki sıraya göre bunları Backpack'e yeniden ebeveyn yapar.
Envanteri Yeniden Sıralalocal 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-- Belirtilen sıraya göre araçları sırasını tekrar ebeveyn yapfor i = 1, #order dolocal tool = ReplicatedStorage:FindFirstChild(order[i])if tool thentool.Parent = backpackendend
Toplanabilir araç
Eğer oyuncuların 3D dünyayı keşfederken fiziksel araçları toplamalarına izin vermek istiyorsanız, araçları normal 3D nesneler gibi Workspace içine yerleştirin. Toplanan araçlar otomatik olarak donatılacak ve oyuncunun envanterine eklenecektir (karakterlerin aracı almak için ekstra çarpışma tespiti eklemenize gerek yoktur).
Parçalar/meshler ekleyin kısmında belirtildiği gibi, araç parçaları genellikle Anchored olmamalıdır; çünkü oyuncu karakterleri bir sabit aracı aldıklarında veya donattıklarında yerlerinde takılacaktır. Ancak, eğer toplanabilir bir aracı 3D dünyada sabit bir yere yerleştirmek isterseniz, yüzer bir yere yerleştirmek gibi, aracı toplandığında parçalarını özgürleştirmek için aşağıdaki Script'i ekleyebilirsiniz.
Toplama/Satma Zamanında Aracın Sabitliğini Kaldır
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)
Kazanılan/satın alınan araç
Eğer araçları, oyuncular görevleri tamamladığında ödül olarak ayarlamak veya araçları oyun içi mağazada satmak istiyorsanız, o araçları ReplicatedStorage içine yerleştirin. Oradan, bir aracı uygun zamanında oyuncunun Backpack'ine Clone() edebilirsiniz.

Oyuncunun Envanterine Aracı Klonlalocal Players = game:GetService("Players")local ReplicatedStorage = game:GetService("ReplicatedStorage")local player = Players.LocalPlayerlocal backpack = player:WaitForChild("Backpack")-- Aracın bir klonunu oluşturlocal tool = ReplicatedStorage:FindFirstChild("WaterSpell")if tool thenlocal clone = tool:Clone()clone.Parent = backpack -- Klonu oyuncunun sırt çantasına eklerend
Araç etkilerini uygulama
Araçları oyununza ekledikten sonra, oyuncuların araçlarını kullanmalarını ve istenen eylemleri gerçekleştirmelerini sağlamak için betikler uygulayabilirsiniz. Aşağıdaki araç spesifik olaylar, aracın durumunu ve oyuncunun bununla olan girdisini belirtir.
- Equipped() — Oyuncu aracını sırt çantasından seçtiğinde ateş eder.
- Unequipped() — Oyuncu araçlarını değiştirdiğinde veya aracı bıraktığında ateş eder.
- Activated() — Oyuncu aracı etkinleştirmeye başladığında (tıkladığında, dokunduğunda veya bir oyun kumandası üzerindeki arka sağ tetikleyiciyi bastığında) ateş eder.
- Deactivated() — Oyuncu etkinleştirme girdisini durdurduğunda (düğmeyi veya dokunmayı bıraktığında) ateş eder.
Araç Olayları Şablonu
local tool = script.Parent
local function onEquip()
print(tool.Name, "aracı donatıldı")
end
local function onUnequip()
print(tool.Name, "aracı çıkarıldı")
end
local function onActivate()
print(tool.Name, "aracı etkinleştirildi")
end
local function onDeactivate()
print(tool.Name, "aracı devre dışı bırakıldı")
end
tool.Equipped:Connect(onEquip)
tool.Unequipped:Connect(onUnequip)
tool.Activated:Connect(onActivate)
tool.Deactivated:Connect(onDeactivate)
Araç olayları yalnızca istemci tarafı LocalScripts içinde ateş eder, çünkü sadece oyuncunun cihazı giriş olduğunda neler olduğunu bilir. Sonuç olarak, çoğu araç hem bir LocalScript hem de bir sunucu tarafı Script gerektirebilir; bunlar aracın davranışının belirli yönlerini yönetir ve bir RemoteEvent, istemciden sunucuya bilgi aktarır (daha fazla bilgi için uzak olaylar ve geri çağırmalar kısmına bakın).
Aşağıda, bir LocalScript veya Script tarafından yönetilen örnek araçlar ve davranışları bulunmaktadır:
| Araç | LocalScript | Script |
|---|---|---|
| Yaratıcı Sihirli Değnek | Oyuncunun aracı etkinleştirdiği yeri tespit eder (Activated()). | Oyuncunun dokunduğu veya tıkladığı yerde 3D dünyada yeni bir parça oluşturur. |
| Görünmezlik Pelerini | Oyuncu aracı donattığında (Equipped()) veya aracı çıkardığında (Unequipped()) tespit eder. | Pelerin donatıldığında oyuncuyu diğer tüm oyuncular için görünmez yapar ve pelerin çıkarıldığında oyuncuyu tam görünürlükte geri döndürür. |
| Mega Yay | Oyuncunun aracı ne kadar süreyle etkinleştirdiğini tespit eder ( Activated() ile Deactivated() arasında geçen süre). | Algılanan etkinleştirme süresine bağlı olarak daha fazla veya daha az güçle sihirli bir ok fırlatır. |
