Tool
*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.
Araçlar, bir Humanoid nesneyi takabilen bir araçtır. Oyuncular için, araçlar bir ekranın altındaki bir Class.Player nesnesine bağ
Masaüstünde, bir sayı tuşuna basılır (1, 2, 3...) bir alet takılır. Takılan aletler Workspace'e BACKSPACE'e basarak bırakılabilir. Bu, aletleri yeniden
Araçlar, kullanıcının girdiğini yakalamak için tek bir yol değildir. Ayrıca ContextActionService ve Class.Tool.Unequipped|Une
Kod Örnekleri
local tool = script.Parent
local function explode(point)
local e = Instance.new("Explosion")
e.DestroyJointRadiusPercent = 0 -- Make the explosion non-deadly
e.Position = point
e.Parent = workspace
end
local function onActivated()
-- Get the Humanoid that Activated the tool
local human = tool.Parent.Humanoid
-- Call explode with the current point the Humanoid is targetting
explode(human.TargetPoint)
end
tool.Activated:Connect(onActivated)
local tool = script.Parent
local function onTouch(partOther)
-- First, try to see if the part we touched was part of a Humanoid
local humanOther = partOther.Parent:FindFirstChild("Humanoid")
-- Ignore touches by non-humanoids
if not humanOther then
return
end
-- Ignore touches by the Humanoid carrying the sword
if humanOther.Parent == tool.Parent then
return
end
humanOther:TakeDamage(5)
end
-- Trigger a slash animation
local function slash()
-- Default character scripts will listen for a "toolanim" StringValue
local value = Instance.new("StringValue")
value.Name = "toolanim"
value.Value = "Slash" -- try also: Lunge
value.Parent = tool
end
tool.Activated:Connect(slash)
tool.Handle.Touched:Connect(onTouch)
Özet
Özellikler
Oyuncunun aleti bırakabileceğini kontrol eder.
Araç kullanılabilir olup olmadığına ilişkin.
Araçların "Sap" özelliklerini bir CFrame olarak saklar.
Sarılma matrisinin R02, R12 ve R22 değerlerini temsil eder.
Aletin kaynak matrisinin pozisyon ofseti.
Sarılma matrisinin R00, R10 ve R20 değerlerini temsil eder.
Sarılma matrisinin R01, R11 ve R21 değerlerini temsil eder.
ManualActivationOnly özelliği, Tool 'i Tool:Activate() olmadan etkinleştirilebilir olup olmadığını kontrol eder.
Bir el ile olmadan bir Tool işlevinin işlevini belirler.
oyuncufareyi sırt çantasındaki aletin üzerine getirdiğinde gösterilen mesajı kontrol eder.
oyuncusırt çantasındaki bir araç için görüntülenen dokunmatik ikon.
Etkisizleştirilmiş senaryolarla ilgili deneyimler için modeldeki ayrıntı seviyesini ayarlar.
İstemci yayınlanma davranışını Models üzerinde kontrol eder.
Class.Model veya nil , aksi belirtilmediyse özelliklerinin temel kısmı.
Modell'in etrafındaki çizgiyi ölçmek için kullanılan sadece modeller için özellik. Bu özelliği ayarlamak, ölçeği Model/ScaleTo çağırdığı gibi hareket ettirecektir.
Bir Model ın pivot'unun nerede bulunduğunu belirler. Bu, bir Class.Model ın pivot'unun bir seti olmadığını gösterir.
Yöntemler
Class.Tool 'in etkinleştirilmesini simüle eder.
Class.Tool 'in deaktivasyonunu simüle eder.
Bu modeli belirli oyuncunun için kalıcı olarak tutmak için ayarlar. Model.ModelStreamingMode eklenen davranışın sonucu olarak PersistentPerPlayer olarak ayarlanmalıdır.
Bir Model'in tüm parçalarını içeren bir hacimin açıklamasını iade eder.
Class.BasePart|BaseParts tüm Model ile aynıdır. Model.PrimaryPart ile aynıdır.
Bu model objesi için persistanslı olan tüm Player nesneleri iade eder. Davranış, bu yöntemin bir Script veya bir LocalScript から çekildiğine bağlı olarak değişir.
Yeni oluşturulan modeller için varsayılan modelin kanal ölçeğini iade eder ve Model/ScaleTo aracılığıyla ölçeklenir.
Class.Model.PrimaryPart|PrimaryPartı verilen pozisyona hareket ettirir. Bir ilk parça belirtilmediyse, modelin kök parçası kullanılır.
Bu model artık belirli oyuncunun için sürükleyici değil. Model.ModelStreamingMode değerini PersistentPerPlayer olarak ayarlanmalıdır, böylece eylemin kaldırma sonucu olarak değiştirilmesi gerekir.
Modelin ölçek faktörünü ayarlar, böylece ölçek faktörü 1 olduğunda tüm yok edici Instanstanların boyut ve konumlarının ölçek faktörüyle ilgili olarak kendi başlangıç boyutları ve yerleriyle ölçek faktörüne kadar kendi başına sahip olur.
Şekillendiriciyi Model ile bir Vector3 ofseti arttırır, modelin yönünü korur. Eğer bir başka BasePart veya 2> Class.Terrain2> zaten mevcutsa, 5> Class.Model5> ile şekillendiriciyi çakal
Bir PVInstance 'nin pivot'unu alır.
Tüm ataları ile birlikte PVInstance şeklini alır, böylece merkez noktası artık belirlenen PVInstances ile bulunur.
Etkinlikler
Araç takılırken oyuncu tıklayınca ateş eder.
Araç donanırken ve etkinleştirildiğinde oyuncunun tıklamasını serbest bırakır.
Alet takıldığında ateş eder.
Alet çıkarıldığında ateşlenir.
Özellikler
CanBeDropped
CanBeDropped özelliği oyuncunun Tool 'ı bırakabileceğini kontrol eder.
Eğer doğruysa, geri alma düğmesine basıldığında araç Workspace ile ebeveyn olacak ve oyuncunun Backpack ile ayrılacaktır. Eğer doğruysa, geri alma düğmesine basılmadığında araç takık kalacaktır.
Enabled
Etkinleştirilmiş özelliği, Tool 'ın kullanılabilir olup olmadığına ilişkin bir özelliktir. Bu, bir oyuncunun bir araç kullanmasını önlemek istediğinizde yararlıdır, ancak Backpack 'ınızı kaldırmak istemez.
Oyuncuya açık bir true ile ayarlandığında, araç kullanılabilir. Ayarlanmış false ile, araç etkinleştirilmiş ve oyuncu kullanılamaz; bu, araç et
Kod Örnekleri
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
local tool = Instance.new("Tool")
tool.Name = "SuperJump"
tool.RequiresHandle = false
tool.Parent = player.Backpack
function toolActivated()
humanoid.JumpPower = 150
tool.Enabled = false
task.wait(5)
tool.Enabled = true
humanoid.JumpPower = 50
end
tool.Activated:Connect(toolActivated)
tool.Unequipped:Connect(function()
humanoid.JumpPower = 50
end)
Grip
The Grip özelliği, aletin "grip" özelliklerini tek bir CFrame olarak saklar. Bu özellikler, oyuncunun aleti nasıl tutacağını ve Class.Tool.
Kod Örnekleri
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local tool = Instance.new("Tool")
tool.Name = "Stick"
tool.Parent = player.Backpack
local handle = Instance.new("Part")
handle.Name = "Handle"
handle.Parent = tool
handle.Size = Vector3.new(0.1, 3, 0.1)
handle.Color = Color3.fromRGB(108, 88, 75) -- Brown
tool.Activated:Connect(function()
print(tool.Grip)
print(tool.GripUp)
print(tool.GripRight)
print(tool.GripForward)
print(tool.GripPos)
end)
GripForward
Bir araçnın bir karakterin elindeki yönünü belirtir. Bu, şu anda R02, R12 ve R22 değerlerini temsil eder. Bu, şu anda 1> Datatype.CFrame1> döndürme matrisindeki çerçevelerin 4> R224> değerlerini temsil eder.
Bir karakterin bir aleti nasıl tutacağını kontrol eden diğer araç özellikleri arasında Tool.GripUp, Tool.GripRight ve Tool.GripPos bulunur. Tüm bu özellikler 2>Class.Tool.Grip2> özelliğinin tek bir <
Kod Örnekleri
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local tool = Instance.new("Tool")
tool.Name = "Stick"
tool.Parent = player.Backpack
local handle = Instance.new("Part")
handle.Name = "Handle"
handle.Parent = tool
handle.Size = Vector3.new(0.1, 3, 0.1)
handle.Color = Color3.fromRGB(108, 88, 75) -- Brown
tool.Activated:Connect(function()
print(tool.Grip)
print(tool.GripUp)
print(tool.GripRight)
print(tool.GripForward)
print(tool.GripPos)
end)
GripPos
Bu özellik, araç öğesi matrisinin pozisyon ofsetini kontrol eder. Araç karakterinin aleti nasıl tutacağını yerleştirmek için birkaç özellikten biridir.
Bir karakterin bir aleti nasıl tutacağını kontrol eden diğer özellikler arasında Tool.GripUp, Tool.GripRight ve Tool.GripForward bulunur. Tüm bu özellikler 2> Datatype.CFrame2> içindeki tek bir 5>
Kod Örnekleri
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local tool = Instance.new("Tool")
tool.Name = "Stick"
tool.Parent = player.Backpack
local handle = Instance.new("Part")
handle.Name = "Handle"
handle.Parent = tool
handle.Size = Vector3.new(0.1, 3, 0.1)
handle.Color = Color3.fromRGB(108, 88, 75) -- Brown
tool.Activated:Connect(function()
print(tool.Grip)
print(tool.GripUp)
print(tool.GripRight)
print(tool.GripForward)
print(tool.GripPos)
end)
GripRight
Bir araçnın bir karakterin elindeki yönünü belirtir. Bu, şu anda R00 , R10 ve R20 değerlerini temsil eder. Bu, şu anda 1> Datatype.CFrame1> döndürme matrisindeki çerçevelerin 4> R204> değerlerini temsil eder.
Bir karakterin bir aleti nasıl tutacağını kontrol eden diğer araç özellikleri arasında Tool.GripUp, Tool.GripForward ve Tool.GripPos bulunur. Tüm bu özellikler 2>Class.Tool.Grip2> özelliğinin tek bir <
Kod Örnekleri
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local tool = Instance.new("Tool")
tool.Name = "Stick"
tool.Parent = player.Backpack
local handle = Instance.new("Part")
handle.Name = "Handle"
handle.Parent = tool
handle.Size = Vector3.new(0.1, 3, 0.1)
handle.Color = Color3.fromRGB(108, 88, 75) -- Brown
tool.Activated:Connect(function()
print(tool.Grip)
print(tool.GripUp)
print(tool.GripRight)
print(tool.GripForward)
print(tool.GripPos)
end)
GripUp
Bir araçnın bir karakterin elindeki yönünü belirtir. Bu, şu anda çalıştığınız çubuğun R01 , R11 ve R21 değerlerini temsil eder. Bu, şu anda çalıştığınız çubuğun rotasyon matrisindeki 2>R22> değerlerine dek kadar
Bir karakterin bir aleti nasıl tutacağını kontrol eden diğer araç özellikleri arasında Tool.GripRight, Tool.GripForward ve Tool.GripPos bulunur. Tüm bu özellikler 2>Class.Tool.Grip2> özelliğinin tek bir <
Kod Örnekleri
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local tool = Instance.new("Tool")
tool.Name = "Stick"
tool.Parent = player.Backpack
local handle = Instance.new("Part")
handle.Name = "Handle"
handle.Parent = tool
handle.Size = Vector3.new(0.1, 3, 0.1)
handle.Color = Color3.fromRGB(108, 88, 75) -- Brown
tool.Activated:Connect(function()
print(tool.Grip)
print(tool.GripUp)
print(tool.GripRight)
print(tool.GripForward)
print(tool.GripPos)
end)
ManualActivationOnly
ManualActivationOnly özelliği, Tool 'i bir senaryoda Tool:Activate() olarak açık/kapalı olabilir.
Açık olarak ayarlandığında, araç sadece Tool.Activated ile çağrıldığında çalışacaktır. Bu ayrıca Tool:Activate() işlevini susturur.
Alternatif olarak, fare tıklamaları (alet takıldığında) ayrıca Tool.Activated ı da ateş eder.
Kod Örnekleri
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
local tool = Instance.new("Tool")
tool.Name = "Sprint"
tool.RequiresHandle = false
tool.Parent = player:WaitForChild("Backpack")
function toolActivated()
humanoid.WalkSpeed = 30
tool.ManualActivationOnly = true
task.wait(5)
tool.ManualActivationOnly = false
humanoid.WalkSpeed = 16
end
tool.Activated:Connect(toolActivated)
tool.Unequipped:Connect(function()
humanoid.WalkSpeed = 16
end)
RequiresHandle
Bu özellik, bir Tool işlevinin bir kolu olmadan işlevini belirler.
Bir araç, Handle adındaki bir çocuk parçayı içerirken bir kolu vardır. Çubuk araçlar genellikle kullanıcının kullanımını tutmak için bir nesneyi tutmak için kullanıcıyı donatmasını gerektirir. Çubuk araçların kolu genellikle silah gibi kullanımları için gereklidir.
Arayüzü belirlenmişken true , arayüz sadece bir başlıkla işlevseldir. Arayüz false ile bile işlevseldir.
ToolTip
ToolTip öğesi, oyuncunun Mouse 'inin üzerinde durduğu Tool ile ilgili mesajı kontrol eder.
Genel olarak, bu öğenin değeri araçların veya kullanımlarının ne olduğunu açıklamalıdır. durum, bir kürek aleti için, AletTip'i şu şekilde ayarlayabilirsiniz:
tool.ToolTip = "Shovel"
veya
tool.ToolTip = "Use to dig"
veya
tool.ToolTip = "Shovel - Use to dig"
Yöntemler
Activate
Bu işlev, Tool 'in etkinleştirilmesini simüle eder. Alet bu işlevi çalıştırmak için donanımlı olmalıdır.
Dönüşler
Kod Örnekleri
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character
local tool = Instance.new("Tool")
tool.Name = "Invisibility Tool"
tool.RequiresHandle = false
tool.Parent = player.Backpack
local invisible = false
local function toolActivated()
if invisible then
return
end
invisible = true
for _, bodypart in pairs(character:GetChildren()) do
if bodypart:IsA("MeshPart") or bodypart:IsA("Part") then
bodypart.Transparency = 1
end
end
task.wait(3)
tool:Deactivate()
task.wait(1)
invisible = false
end
local function toolDeactivated()
if not invisible then
return
end
for _, bodypart in pairs(character:GetChildren()) do
if bodypart.Name ~= "HumanoidRootPart" then
if bodypart:IsA("MeshPart") or bodypart:IsA("Part") then
bodypart.Transparency = 0
end
end
end
end
local function toolEquipped()
tool:Activate()
end
tool.Equipped:Connect(toolEquipped)
tool.Activated:Connect(toolActivated)
tool.Deactivated:Connect(toolDeactivated)
tool.Unequipped:Connect(toolDeactivated)
Deactivate
Bu işlev, Tool 'nın deaktivasyonunu simüle eder. Alet bu işlevin çalışması için donatılmalıdır.
Dönüşler
Kod Örnekleri
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character
local tool = Instance.new("Tool")
tool.Name = "Invisibility Tool"
tool.RequiresHandle = false
tool.Parent = player.Backpack
local invisible = false
local function toolActivated()
if invisible then
return
end
invisible = true
for _, bodypart in pairs(character:GetChildren()) do
if bodypart:IsA("MeshPart") or bodypart:IsA("Part") then
bodypart.Transparency = 1
end
end
task.wait(3)
tool:Deactivate()
task.wait(1)
invisible = false
end
local function toolDeactivated()
if not invisible then
return
end
for _, bodypart in pairs(character:GetChildren()) do
if bodypart.Name ~= "HumanoidRootPart" then
if bodypart:IsA("MeshPart") or bodypart:IsA("Part") then
bodypart.Transparency = 0
end
end
end
end
local function toolEquipped()
tool:Activate()
end
tool.Equipped:Connect(toolEquipped)
tool.Activated:Connect(toolActivated)
tool.Deactivated:Connect(toolDeactivated)
tool.Unequipped:Connect(toolDeactivated)
Etkinlikler
Activated
Bu olay oyuncu oyunu oynarken Tool takılırken başlar. Oyuncu oyunu tıklaCtrl tuşu basılırsa oyun değil oyunu durdurur.
Bu olay genellikle oyuncu araç kullandığında bir eylem yapmak için kullanılır, örneğin bir roket fırlatıcı silahından bir rokete başlatmak için.
Aşağıdaki kod, bir LocalScript içine yerleştirildiğinde, oyuncunun yerleştirildiği Backpack içinde bir araç oluşturur ve oyuncu oluşturulan araç takıkken "Araç aktifleştirildi" yazıyor.
local tool = Instance.new("Tool")
tool.RequiresHandle = false
tool.Parent = game.Players.LocalPlayer.Backpack
function onActivation()
print("Tool activated")
end
tool.Activated:Connect(onActivation)
Deactivated
Bu olay oyuncu bir Tool ile tıklamayı serbest bıraktığında başlar. Genellikle oyuncu bir araç kullanmayı bıraktığında eylem yapmak için kullanılır.
Aşağıdaki kod, bir LocalScript içine yerleştirildiğinde, lokal oyuncunun Backpack 'ında bir araç oluşturur ve oyuncu serbest bıraktığında araç "Alet etkisizleştirildi" olarak yazılır.
local tool = Instance.new("Tool")
tool.RequiresHandle = false
tool.Parent = game.Players.LocalPlayer.Backpack
function toolDeactivated()
print("Tool deactivated")
end
tool.Deactivated:Connect(toolDeactivated)
Equipped
Bu olay oyuncu şu Tool (onu Backpack dışından çıkarır) takınca çıkar.
Bu olayın tersi, Tool.Unequipped, oyuncunun aleti çantasına koyarak ne zaman çantasından çıkaracağını belirlemek için kullanılabilir.
Not et Class.Tool.RequiresHandle kullanılıyor ve hiçbir kullanıcı yoksa Tool.RequiresHandle kullanılıyor.
Parametreler
oyuncufareniz.
Kod Örnekleri
local Tool = script.Parent
local function onEquipped(_mouse)
print("The tool was equipped")
end
Tool.Equipped:Connect(onEquipped)
Unequipped
Bu olay, bir oyuncu Tool (onu Backpack ) çıkarırken çalışır.
Bu olayın tersi, Tool.Equipped, oyuncunun eşyayı çantasından çıkararak eşyayı kullanmasını belirlemek için kullanılabilir.
Not et Class.Tool.RequiresHandle kullanılıyor ve hiçbir kullanıcı yoksa Tool.RequiresHandle kullanılıyor.