Oyun içi araçlar

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

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.

  1. Explorer hiyerarşisinde Workspace üzerine gelin, düğmesine tıklayın ve bir Tool ekleyin.

    Çalışma alanında oluşturulan Araç nesnesi
  2. 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ı.
  3. 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.

Studio'nun araç çubuğundaki kısıtlama seçicileri

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:

Yerde sürüklenen fener ile Grip.Position değeri (0, -2, 0) ve Grip.Orientation değeri (-90, 0, 0)
Karakterin önünde fener ile Grip.Position değeri (0, -1.5, 0) ve Grip.Orientation değeri (25, 0, 0)

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ırala

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local order = {"WaterSpell", "FireSpell", "AirSpell", "EarthSpell"}
local backpack = script.Parent
for _, item in backpack:GetChildren() do
if item:IsA("Tool") then
item.Parent = ReplicatedStorage
end
end
-- Belirtilen sıraya göre araçları sırasını tekrar ebeveyn yap
for i = 1, #order do
local tool = ReplicatedStorage:FindFirstChild(order[i])
if tool then
tool.Parent = backpack
end
end

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ı Klonla

local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local player = Players.LocalPlayer
local backpack = player:WaitForChild("Backpack")
-- Aracın bir klonunu oluştur
local tool = ReplicatedStorage:FindFirstChild("WaterSpell")
if tool then
local clone = tool:Clone()
clone.Parent = backpack -- Klonu oyuncunun sırt çantasına ekler
end

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çLocalScriptScript
Yaratıcı Sihirli DeğnekOyuncunun 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 PeleriniOyuncu 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 YayOyuncunun 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.
©2026 Roblox Corporation. Roblox, the Roblox logo and Powering Imagination are among our registered and unregistered trademarks in the U.S. and other countries.