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 nesnesinin donatabileceği nesnelerdir.Oyuncular için, bir Backpack nesneye bağlı bir Player nesneye depolanırlar.Oyun içinde, oyuncular ekranın altında simgeler olarak görünen çok sayıda alet olabilir.Bir aracı donatmak, onu sırt çantasından Player.Character bir modeline ve Workspace içine taşır.Varsayılan olarak, araçlar sağ elde tutulur ve içlerinde bir tutamaç vardır, ki bu bir Part içinde "Kullanıcı" olarak adlandırılır (bir tane gerekli değilse, Tool.RequiresHandle kapalı olduğunda).Oyunculara yeniden doğmak için sağlanacak araçların StarterPack depolanması gerekir.
Masaüstünde, bir sayı tuşuna basmak (1, 2, 3...) bir araç donatacaktır.Takılan araçlar, Geri gitme tuşuna basarak Çalışma Alanı'na bırakılabilir.Bir araç bırakmak, ölmek, yeniden doğmak ve araçları kopyalamak için tekrar düşürmek mümkün olmadığından Tool.CanBeDropped kapatmanız önerilir.Oyun masaüstü, LB ve RB düğmeleri araçları donatacaktır.Aktivasyonu sol tıklama ile (veya oyun kolu üzerinde sağ tetik ile) devre dışı bırakabilirsiniz, bunu yapmak için Tool.ManualActivationOnly üzerinde ayar yapabilirsiniz.Bunu yapmak, başka bir kullanıcının girişi aracılığıyla kendinizi etkinleştirmenizi gerektirir.
Araçlar, kullanıcı girişini yakalamanın tek yolu değildir.Ayrıca ContextActionService , UserInputService veya Player:GetMouse() kullanabilirsiniz.Bir araçta çok sayıda eylem yapmak için bir araç gerekiyorsa, aracı takılıyken bir tuşa basmak gibi, ve Bir LocalScript aracılığıyla bu eylemleri sunucuya gönderin RemoteFunction aracılığıyla Araç içinde.
Kod Örnekleri
This code is meant to be placed in a Script within a Tool. It allows a player to spawn explosions by equipping the tool and clicking on the ground. It does so by defining a function, explode, which creates a non-deadly explosion at a given point. Then, it defines a function, onActivated, that runs when the tool is activated. Finally, it connects the Activated event of the tool to the onActivated function.
To test this code out, try creating a Tool and put a Part inside it. Name the Part "Handle". Put a Script inside the Tool next, and paste the code into it. Finally, put the Tool in the StarterPack.
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)
This code sample is for a Tool object with a Part named Handle. It detects when Humanoids other than the current holder hit the handle, and deals some damage to them. In addition, when the Tool is activated, it triggers a slash animation in the default character animation scripts. Try out this script by creating a Tool object in the StarterPack. Put a Part inside it, and name it Handle. Paste this code into a Script inside the Tool, then try slashing at another Humanoid!
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ırakıp bırakmayacağını kontrol eder.
Araç kullanılabilir olup olmadığıyla ilgilidir.
Araçların "kavrama" özelliklerini bir CFrame olarak depolar.
Kavrama R02 , R12 ve R22 değerlerini temsil eder CFrame dönüş matrisi.
Araçın kaynak matrisinin pozisyonel ofseti.
Kavrama R00 , R10 ve R20 değerlerini temsil eder CFrame dönüş matrisi.
Kavrama R01 , R11 ve R21 değerlerini temsil eder CFrame dönüş matrisi.
ManualActivationOnly özelliği, Tool ın çalıştırılmadan etkinleştirilebilir olup olmadığını kontrol eder, Tool:Activate() .
Bir tutamaç olmadan bir Tool fonksiyonunun var olup olmadığını belirler.
oyuncufare işaretçisi aracın üzerine geldiğinde gösterilen mesajı kontrol eder.
oyuncusırt çantasında bir araç için gösterilen dokunma simgesi.
Aktif durum yayınıyla deneyimler için modeldeki ayrıntı seviyesini ayarlar.Sets the level of detail on the model for experiences with instance streaming enabled.
Instans yayını etkinleştirildiğinde model yayın davranışını Models kontrol eder.
Birincil parçası Model , veya nil eğer açıkça ayarla.
Modelin etrafındaki pivot etrafında ölçeklendirilmesi için yalnızca editör tarafından kullanılan özellik. Bu özelliği ayarlamak, ölçeğin sanki Model/ScaleTo çağrılmış gibi hareket edeceğini değiştirecektir.
Hangi noktada bir Model döndürme noktasının bulunduğunu belirler bulunmuyor ve bunun bir set Model.PrimaryPart içerdiği yer.
Yöntemler
Şuradan alınan Yöntemler: ModelBu modeli belirtilen oyuncu için kalıcı olarak ayarlar.Model.ModelStreamingMode davranışın ek sonucu olarak değiştirilmesi için değiştirilmesi gereken davranış PersistentPerPlayer olarak ayarlanmalıdır.
Bir Model'in tüm parçalarını içeren bir hacmin açıklamasını döndürür.
'nin tümünü içeren en küçük sınırlayıcı kutunun boyutunu döndürür, eğer ayarlanırsa ile uyumlu olur.
Bu model nesnesi için kalıcı olan tüm Player nesnelerini döndürür.Davranış, bu yöntemin bir Script veya bir LocalScript 'dan çağrılıp çağrılmadığına bağlı olarak değişir.
Yeni oluşturulan modeller için varsayılan 1'e döner ve Model/ScaleTo aracılığıyla ölçeklendirildiğinde değişecektir.
PrimaryPart ı verilen pozisyona taşır. Birincil bir parça belirtilmediyse, modelin kök parçası kullanılacaktır.
Bu modeli belirtilen oyuncu için artık kalıcı olmayan yapar.Model.ModelStreamingMode davranışın kaldırılmasının sonucunda değiştirilmesi için değiştirilmesi gereken davranış için KalıcıOyuncu olarak ayarlanmalıdır.
Modelin ölçek faktörünü ayarlar, böylece tüm alt örneklerin boyutlandırma ve konumunu ayarlar ve ölçek faktörü 1 olduğunda ilk boyutları ve konumları ile ilgili bu ölçek faktörüne sahip olurlar.
Verilen Model ofsetiyle bir Vector3 değiştirir, modelin yönünü koruyarak.Yeni pozisyonda zaten başka bir BasePart veya Terrain varsa, Model o nesneyi üzerine geçecektir.
Bir PVInstance 'nin merkezini alır.
Dönüştürür PVInstance tüm altındaki PVInstances ile birlikte pivotun şimdi belirtilen CFrame 'de yer aldığını, böylece dönüşüm aşağıdaki gibi gerçekleşir:
Etkinlikler
Araç takılıyken oyuncu tıkladığında ateş eder.
Araç donatıldığında ve etkinleştirildiğinde oyuncu tıkladığında ateş eder.
Araç donatıldığında ateş eder.
Araç çıkarıldığında ateş eder.
Özellikler
CanBeDropped
CanBeDropped özelliği, oyuncunun Tool düşürebileceğini kontrol eder.
Eğer doğruysa, geri gitme düğmesine basıldığında, araç Workspace ebeveyn olacak ve oyuncunun Backpack kaldırılacak.Eğer yanlışsa, geri gitme tuşuna basıldığında hiçbir şey olmayacak ve araç takılı kalacak.
Enabled
Etkinleştirildi özelliği, Tool kullanılabilecek olup olmadığıyla ilgilidir.Bir oyuncunun bir araç kullanmasını englemek istiyorsanız bu yararlıdır, ancak onu Backpack kaldırmak istemezsiniz.
true olarak ayarlanırsa, oyuncu araç kullanabilir.false olarak ayarlanırsa, aracı devre dışı bırakılır ve oyuncu bunu kullanamaz; bu, Tool:Activate() ve Tool:Deactivate() yöntemleri tarafından aracın etkinleştirilmesini veya devre dışı bırakılmasını engeller ve Tool.Activated ve Tool.Deactivated olaylarının ateşlenmesini engeller.
Kod Örnekleri
The code sample below creates Tool in the local player's Backpack that increases their JumpPower from 50 to 150 for 5 seconds.
This example uses the tool's Tool.Enabled property as a debounce by setting the property to true when the player jumps and back to false after the 5 second duration.
Unequipping the tool also stops the player from super jumping by changing the JumpPower back to 50.
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, araçların "kavrama" özelliklerini tek bir CFrame olarak depolar.Bu özellikler, oyuncunun araçları nasıl tuttuğunu ve GripUp , GripRight , GripForward ve GripPos gibi ekleri içerdiğini belirler.
Kod Örnekleri
The code below insert's a Tool named Stick into the local player's Class.BackPack. When the player activates the tool, the code prints the values of the tool's grip properties.
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 karakterin elinde bir aracın yönünü tanımlayan özelliklerden biri.Bu, kavrama R02 , R12 ve R22 değerlerini temsil eder CFrame dönüş matrisinin.
Bir karakterin bir araç tutma şeklini kontrol eden diğer araç özellikleri Tool.GripUp , Tool.GripRight ve Tool.GripPos içerir.Tüm bu özellikler bir tek CFrame içinde depolanır Tool.Grip.
Kod Örnekleri
The code below insert's a Tool named Stick into the local player's Class.BackPack. When the player activates the tool, the code prints the values of the tool's grip properties.
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, aletin kaynak matrisinin pozisyonel ofsetini kontrol eder.Oyuncu karakterinin aleti nasıl tuttuğunu konumlandırmak için kullanılan birkaç özellikten biridir.
Bir karakterin bir araç tutma şeklini kontrol eden diğer özellikler Tool.GripUp , Tool.GripRight ve Tool.GripForward içerir.Tüm bu özellikler bir tek CFrame içinde depolanır Tool.Grip.
Kod Örnekleri
The code below insert's a Tool named Stick into the local player's Class.BackPack. When the player activates the tool, the code prints the values of the tool's grip properties.
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 karakterin elinde bir aracın yönünü tanımlayan özelliklerden biri.Bu, kavrama R00 , R10 ve R20 değerlerini temsil eder CFrame dönüş matrisinin.
Bir karakterin bir araç tutma şeklini kontrol eden diğer araç özellikleri Tool.GripUp , Tool.GripForward ve Tool.GripPos içerir.Tüm bu özellikler bir tek CFrame içinde depolanır Tool.Grip.
Kod Örnekleri
The code below insert's a Tool named Stick into the local player's Class.BackPack. When the player activates the tool, the code prints the values of the tool's grip properties.
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 karakterin elinde bir aracın yönünü tanımlayan özelliklerden biri.Bu, kavrama R01 , R11 ve R21 değerlerini temsil eder CFrame dönüş matrisinin.
Bir karakterin bir araç tutma şeklini kontrol eden diğer araç özellikleri Tool.GripRight , Tool.GripForward ve Tool.GripPos içerir.Tüm bu özellikler bir tek CFrame içinde depolanır Tool.Grip.
Kod Örnekleri
The code below insert's a Tool named Stick into the local player's Class.BackPack. When the player activates the tool, the code prints the values of the tool's grip properties.
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 ı bir senaryoda açıkça çalıştırmadan etkinleştirip etkinleştirilemeyeceğini kontrol eder, Tool:Activate() .
Doğru ayarlanırsa, araç yalnızca çağrıldığında ateş edecektir. Bu ayrıca fonksiyonunu da bastırır.
Yanlış olarak ayarlanırsa, aracı takıldığında fare tıklamaları da Tool.Activated ateş edecektir.
Kod Örnekleri
The code sample below creates Tool in the local player's Backpack that increases their WalkSpeed from 16 to 30 for 5 seconds.
This example uses the tool's Tool.ManualActivationOnly property as a debounce by setting the property to true when the player begins sprinting and to false when the player stops sprinting. As a result, when the player is sprinting, the tool cannot be re-activated.
Unequipping the tool also stops the player from sprinting by changing the WalkSpeed to 16.
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 tutamaç olmadan Tool fonksiyonlarının var olup var olmadığını belirler.
Bir araç, Tutuş adında bir çocuk parçası içerdiğinde bir tutamağa sahiptir.Kolları olan araçlar genellikle bir nesneyi tutmak için oyuncunun onları donatmasını gerektirir, örneğin silahlar.Kulplu olmayan araçlar genellikle oyuncunun onları kullanmak için herhangi bir şey tutmasını gerektirmez, örneğin "uç" veya "çağır" araçları.
true olarak ayarlanırsa, araç sadece bir tutamaçla çalışacaktır. false olarak ayarlanırsa, araç bir tutamaç olmadan bile çalışacaktır.
ToolTip
Araç İpuçları özelliği, oyuncunun Mouse üzerinde gezinirken görüntülenen mesajı kontrol eder Tool çünkü oyuncunun Backpack 'sinde.
Genel olarak, bu özelliğin değeri, aracın ne olduğunu veya kullanımını tanımlamalıdır.durum, bir kazma aracı için, Araç İpuçlarını şöyle ayarlamayı seçebilirsiniz:
tool.ToolTip = "Shovel"
or
tool.ToolTip = "Use to dig"
or
tool.ToolTip = "Shovel - Use to dig"
Yöntemler
Activate
Bu işlev, Tool 'nin etkinleştirilmesini simüle eder. Bu işlevin çalışması için aracın donatılması gerekir.
Dönüşler
Kod Örnekleri
The code below creates a Tool in the local player's Backpack that turns the player invisible when activated and visible when deactivated.
When equipped, the script simulates the tool being activated and turns the player invisible for 3 seconds and then simulates the tool being deactivated. Holding the left mouse button down turns the player invisible for up to 3 seconds, with a cooldown period of 1 second, or until the player releases their left mouse button.
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 'nin devre dışı bırakılmasını simüle eder. Bu işlevin çalışması için aracın donatılması gerekir.
Dönüşler
Kod Örnekleri
The code below creates a Tool in the local player's Backpack that turns the player invisible when activated and visible when deactivated.
When equipped, the script simulates the tool being activated and turns the player invisible for 3 seconds and then simulates the tool being deactivated. Holding the left mouse button down turns the player invisible for up to 3 seconds, with a cooldown period of 1 second, or until the player releases their left mouse button.
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, Tool donanımlıyken oyuncu tıkladığında ateşlenir. değil tıklama sırasında Ctrl anahtarı basılırsa ateşlenmez.
Bu etkinlik genellikle oyuncu araç kullandığında bir eylem gerçekleştirmek için kullanılır, örneğin bir roket fırlatıcı silah aracından bir roket fırlatmak.
Aşağıdaki kod, bir LocalScript içine yerleştirildiğinde, yerel oyuncunun Backpack 'sinde bir araç oluşturur ve oluşturulan araç takılırken oyuncu tıkladığında "Araç aktifleştirildi" basılır.
local Players = game:GetService("Players")
local tool = Instance.new("Tool")
tool.RequiresHandle = false
tool.Parent = Players.LocalPlayer.Backpack
function onActivation()
print("Tool activated")
end
tool.Activated:Connect(onActivation)
Deactivated
Bu olay, Tool donanımlı ve etkinleştirilmişken oyuncu tıklamayı serbest bıraktığında ateşlenir.Oyuncu bir araç kullanmayı bıraktığında genellikle bir eylem gerçekleştirmek için kullanılır.
Aşağıdaki kod, bir LocalScript içine yerleştirildiğinde, yerel oyuncunun Backpack 'sinde bir araç oluşturur ve oyuncu araç takılıp etkinleştirildiğinde "Araç devre dışı bırakıldı" basar yazdırır.
local Players = game:GetService("Players")
local tool = Instance.new("Tool")
tool.RequiresHandle = false
tool.Parent = Players.LocalPlayer.Backpack
function toolDeactivated()
print("Tool deactivated")
end
tool.Deactivated:Connect(toolDeactivated)
Equipped
Bu olay, bir oyuncu Tool (onu çıkarır) takıldığında ateşlenir (Backpack 'dan alır).
Bu olayın tersi, Tool.Unequipped , oyuncunun aleti sırt çantasına koyarak kaldırdığı zamanı belirlemek için kullanılabilir.
Bu etkinin yok ateş etmediğini unutmayın, Tool.RequiresHandle etkinleştirildiğinde ve bir tutamaç mevcut olmadığında.
Parametreler
oyuncufare'u.
Kod Örnekleri
The example shown below will print "A tool was equipped" each time the tool is equipped by the player. Please note that the below example assumes that you've already defined what "Tool" is.
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 kendi Backpack içine koyar) donatılmadığında ateşlenir.
Bu olayın tersi, Tool.Equipped , oyuncunun aracı sırt çantasından çıkarmasıyla aleti takacağı zamanı belirlemek için kullanılabilir.
Bu etkinin yok ateş etmediğini unutmayın, Tool.RequiresHandle etkinleştirildiğinde ve bir tutamaç mevcut olmadığında.