Tool
*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.
Tool to obiekt, który może być wyposażony przez obiekt Humanoid. Dla graczy, jest przechowywany w obiekcie Backpack rodzicowanym do obiektu Player W doświadczeniu (in-experience), gracze mogą mieć wiele narzędzi, które pojawiają się jako ikony na dole ekranu. Wyposażenie narzędzia przenosi je z Backpack do modelu Player.Character w Workspace. Domyślnie, narzędzia są trzymane w prawej ręce i mają uchwyt w nim, który jest BasePart o nazwie Handle wewnątrz (chociaż nie jest wymagany, jeśli Tool.RequiresHandle to false). Narzędzia, które mają być dostarczone do graczy (re)spawnujących, powinny być przechowywane w StarterPack.
Przykłady kodu
Ten kod ma być umieszczony w Skrypcie wewnątrz Narzędzia. Pozwala graczowi na wywoływanie eksplozji poprzez wyposażenie narzędzia i kliknięcie na ziemię. Działa poprzez zdefiniowanie funkcji explode, która tworzy niegroźną eksplozję w podanym punkcie. Następnie definiuje funkcję onActivated, która uruchamia się, gdy narzędzie jest aktywowane. Na koniec łączy zdarzenie Activated narzędzia z funkcją onActivated.
Aby przetestować ten kod, spróbuj stworzyć Narzędzie i umieść w nim Element. Nazwij Element "Handle". Następnie umieść Skrypt w Narzędziu i wklej kod do niego. Na koniec umieść Narzędzie w StarterPack.
local tool = script.Parent
local function explode(point)
local e = Instance.new("Explosion")
e.DestroyJointRadiusPercent = 0 -- Uczyń eksplozję niegroźną
e.Position = point
e.Parent = workspace
end
local function onActivated()
-- Pobierz Humanoida, który aktywował narzędzie
local human = tool.Parent.Humanoid
-- Wywołaj explode z bieżącym punktem, który Humanoid celuje
explode(human.TargetPoint)
end
tool.Activated:Connect(onActivated)
Ten przykład kodu dotyczy obiektu Narzędzie z Częścią o nazwie Uchwytem. Wykrywa kiedy Humanoidy inne niż aktualny posiadacz uderzą w uchwyt i zadaje im pewne obrażenia. Dodatkowo, kiedy Narzędzie jest aktywowane, uruchamia animację slasha w domyślnych skryptach animacji postaci. Wypróbuj ten skrypt, tworząc obiekt Narzędzia w StarterPack. Umieść w nim Część i nazwij ją Uchwytem. Wklej ten kod do Skryptu w środku Narzędzia, a następnie spróbuj zaatakować innego Humanoida!
local tool = script.Parent
local function onTouch(partOther)
-- Najpierw spróbuj zobaczyć, czy część, którą dotknęliśmy, była częścią Humanoida
local humanOther = partOther.Parent:FindFirstChild("Humanoid")
-- Ignoruj dotknięcia przez nie-humanoidy
if not humanOther then
return
end
-- Ignoruj dotknięcia przez Humanoida noszącego miecz
if humanOther.Parent == tool.Parent then
return
end
humanOther:TakeDamage(5)
end
-- Uruchom animację slasha
local function slash()
-- Domyślne skrypty postaci będą nasłuchiwać na "toolanim" StringValue
local value = Instance.new("StringValue")
value.Name = "toolanim"
value.Value = "Slash" -- spróbuj też: Lunge
value.Parent = tool
end
tool.Activated:Connect(slash)
tool.Handle.Touched:Connect(onTouch)
Podsumowanie
Właściwości
Kontroluje, czy gracz może upuścić narzędzie.
Dotyczy tego, czy narzędzie może być używane.
Przechowuje właściwości "uchwytu" narzędzia jako jeden CFrame.
Reprezentuje wartości R02, R12 i R22 macierzy rotacji CFrame uchwytu.
Przesunięcie pozycyjne macierzy spawania narzędzia.
Reprezentuje wartości R00, R10 i R20 macierzy rotacji CFrame uchwytu.
Reprezentuje wartości R01, R11 i R21 macierzy rotacji CFrame uchwytu.
Kontroluje, czy Tool może być aktywowane bez wywoływania Tool:Activate().
Określa, czy Tool działa bez uchwytu.
Kontroluje wiadomość wyświetlaną, gdy mysz gracza unosi się nad narzędziem w ich plecaku.
Właściwości
Ikona tekstury wyświetlana dla narzędzia w plecaku gracza. Obsługuje tylko URI zasobów.
Ikona tekstury wyświetlana dla narzędzia w plecaku gracza.
Właściwości
Ustawia poziom szczegółowości modelu dla doświadczeń z włączonym streamowaniem instancji.
Kontroluje zachowanie streamowania modelu w Models, gdy streamowanie instancji jest włączone.
Główna część Model, lub nil, jeśli nie została jawnie ustawiona.
Właściwość tylko dla edytora, używana do skalowania modelu wokół jego pivotu. Ustawienie tej właściwości spowoduje przeniesienie skali tak, jakby Model/ScaleTo zostało wywołane na nim.
Określa, gdzie znajduje się pivot Model, który nie ma ustawionej Model.PrimaryPart.
Właściwości
Metody
Metody odziedziczeni z: ModelMetody
Ustawia ten model jako trwały dla określonego gracza. ModelStreamingMode musi być ustawione na PersistentPerPlayer, aby zachowanie mogło zostać zmienione w wyniku dodania.
Zwraca opis objętości, która zawiera wszystkie części modelu.
Zwraca rozmiar najmniejszej ramki ograniczającej, która zawiera wszystkie BaseParts w Model, wyrównanej z Model.PrimaryPart, jeśli jest ustawiona.
Zwraca wszystkie obiekty Player, dla których ten obiekt modelu jest trwały. Zachowanie różni się w zależności od tego, czy ta metoda jest wywoływana z Script, czy LocalScript.
Zwraca kanoniczną skalę modelu, która domyślnie wynosi 1 dla nowo utworzonych modeli i zmienia się w miarę skalowania za pomocą Model/ScaleTo.
Przesuwa PrimaryPart do podanej pozycji. Jeśli główna część nie została określona, użyta zostanie główna część modelu.
Sprawia, że ten model nie jest już trwały dla określonego gracza. ModelStreamingMode musi być ustawione na PersistentPerPlayer, aby zachowanie mogło zostać zmienione w wyniku usunięcia.
Ustawia współczynnik skali modelu, dostosowując rozmiar i lokalizację wszystkich instancji potomnych tak, aby miały ten współczynnik skali w stosunku do ich początkowych rozmiarów i lokalizacji, gdy współczynnik skali wynosił 1.
Przesuwa Model o podany Vector3 offset, zachowując orientację modelu. Jeśli inny BasePart lub Terrain już istnieje w nowej pozycji, to Model będzie nakładać się na ten obiekt.
Metody
Pobiera pivot PVInstance.
Przekształca PVInstance wraz ze wszystkimi jego potomkami PVInstances, tak aby pivot znajdował się teraz w określonym CFrame.
Zdarzenia
Wywoływane, gdy gracz klika, gdy narzędzie jest wyposażone.
Wywoływane, gdy gracz zwalnia kliknięcie, gdy narzędzie jest wyposażone i aktywowane.
Wywoływane, gdy narzędzie jest wyposażone.
Wywoływane, gdy narzędzie jest odrzucone.
Właściwości
CanBeDropped
Enabled
Przykłady kodu
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
Przykłady kodu
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local tool = Instance.new("Tool")
tool.Name = "Dźwignia"
tool.Parent = player.Backpack
local handle = Instance.new("Part")
handle.Name = "Uchwyt"
handle.Parent = tool
handle.Size = Vector3.new(0.1, 3, 0.1)
handle.Color = Color3.fromRGB(108, 88, 75) -- Brązowy
tool.Activated:Connect(function()
print(tool.Grip)
print(tool.GripUp)
print(tool.GripRight)
print(tool.GripForward)
print(tool.GripPos)
end)
GripForward
Przykłady kodu
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local tool = Instance.new("Tool")
tool.Name = "Dźwignia"
tool.Parent = player.Backpack
local handle = Instance.new("Part")
handle.Name = "Uchwyt"
handle.Parent = tool
handle.Size = Vector3.new(0.1, 3, 0.1)
handle.Color = Color3.fromRGB(108, 88, 75) -- Brązowy
tool.Activated:Connect(function()
print(tool.Grip)
print(tool.GripUp)
print(tool.GripRight)
print(tool.GripForward)
print(tool.GripPos)
end)
GripPos
Przykłady kodu
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local tool = Instance.new("Tool")
tool.Name = "Dźwignia"
tool.Parent = player.Backpack
local handle = Instance.new("Part")
handle.Name = "Uchwyt"
handle.Parent = tool
handle.Size = Vector3.new(0.1, 3, 0.1)
handle.Color = Color3.fromRGB(108, 88, 75) -- Brązowy
tool.Activated:Connect(function()
print(tool.Grip)
print(tool.GripUp)
print(tool.GripRight)
print(tool.GripForward)
print(tool.GripPos)
end)
GripRight
Przykłady kodu
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local tool = Instance.new("Tool")
tool.Name = "Dźwignia"
tool.Parent = player.Backpack
local handle = Instance.new("Part")
handle.Name = "Uchwyt"
handle.Parent = tool
handle.Size = Vector3.new(0.1, 3, 0.1)
handle.Color = Color3.fromRGB(108, 88, 75) -- Brązowy
tool.Activated:Connect(function()
print(tool.Grip)
print(tool.GripUp)
print(tool.GripRight)
print(tool.GripForward)
print(tool.GripPos)
end)
GripUp
Przykłady kodu
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local tool = Instance.new("Tool")
tool.Name = "Dźwignia"
tool.Parent = player.Backpack
local handle = Instance.new("Part")
handle.Name = "Uchwyt"
handle.Parent = tool
handle.Size = Vector3.new(0.1, 3, 0.1)
handle.Color = Color3.fromRGB(108, 88, 75) -- Brązowy
tool.Activated:Connect(function()
print(tool.Grip)
print(tool.GripUp)
print(tool.GripRight)
print(tool.GripForward)
print(tool.GripPos)
end)
ManualActivationOnly
Przykłady kodu
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
ToolTip
Metody
Activate
Zwroty
Przykłady kodu
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character
local tool = Instance.new("Tool")
tool.Name = "Narzędzie Niewidzialności"
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
Zwroty
Przykłady kodu
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character
local tool = Instance.new("Tool")
tool.Name = "Narzędzie Niewidzialności"
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)
Zdarzenia
Activated
Deactivated
Equipped
Parametry
Przykłady kodu
local Tool = script.Parent
local function onEquipped(_mouse)
print("Narzędzie zostało wyposażone")
end
Tool.Equipped:Connect(onEquipped)