도구는 플레이어가 장착할 수 있는 Humanoid 개체의 도구입니다. 플레이어는 스크�
데스크톱숫자 키(1, 2, 3...)를 누르면 도구가 장비됩니다. 장비된 도구는 백스페이스를 눌러 작업 공간에 내려질 수 있
도구는 사용자 입력을 캡처하는 유일한 방법이 아닙니다. 또한 ContextActionService 및 Class.Tool.Unequipped|Unequipped
코드 샘플
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)
요약
속성
플레이어가 도구를 떨어뜨릴 수 있는지 여부를 제어합니다.
도구가 사용 가능한지 여부와 관련이 있습니다.
도구의 "손 덮개" 속성을 하나의 CFrame 로 저장합니다.
그립 R02 회전 매트릭스의 R12 값을 나타냅니다.
도구의 접합 매트리스의 위치 오프셋.
그립 R00 회전 매트릭스의 R10, R20 및 2>R202>값을 나타냅니다.
그립 R01 회전 매트릭스의 R11 및 R21값을 나타냅니다.
ManualActivationOnly 속성은 Tool 를 실행하지 않고도 Tool:Activate() 를 실행할 수 있는지 여부를 제어합니다.
핸들이 없는 Tool 함수가 작동하는지 여부를 결정합니다.
플레이어의 마우스가 백팩에 있는 도구 위에 있을 때 표시되는 메시지를 제어합니다.
플레이어 백팩에 있는 도구에 대해 표시되는 텍스처 아이콘입니다.
인스턴스 스트림이 활성화된 경험에 대한 모델의 세부 정보 수준을 설정합니다.
Class.Model|Models 인스턴스 스트림이 활성화된 경우 모델 스트림 동작을 제어합니다.
명시적으로 설정되지 않은 경우 Model 또는 nil입니다.
모델 주위의 피벗을 조정하는 편집기 전용 속성입니다. 이 속성을 설정하면 피벗이 있는 것처럼 Model/ScaleTo 가 호출됩니다.
Class.Model의 피벗이 어디에 있는지 결정합니다. 이 피벗은 아님 이 세트에 있는 Model.PrimaryPart입니다.
메서드
Class.Tool 의 활성화를 시뮬레이션합니다.
Class.Tool 의 비활성화를 시뮬레이션합니다.
이 모델을 지정된 플레이어에게 영구적으로 유지하도록 합니다. Model.ModelStreamingMode 는 추가를 결과로 변경하는 동안 PersistentPerPlayer 에 설정해야 합니다.
모델의 모든 부분이 포함된 볼륨의 설명을 반환합니다.
Class.Model의 모든 Model를 포함하는 가장 작은 바인딩 상자의 크기를 반환합니다. Model.PrimaryPart가 설정된 경우 1>Class.Model1>와 함께.
이 모델 개체가 지속되는 모든 Player 개체를 반환합니다. 동작은 이 메서드가 Script 또는 LocalScript에서 호출되는지에 따라 변경됩니다.
새로 생성된 모델의 경우 기본적으로 1이 되지만 Model/ScaleTo 를 통해 크기를 조정하면 변경됩니다.
이동 하는 PrimaryPart 를 지정된 위치로. 주 부품이 지정되지 않은 경우 모델의 기본 부품이 사용됩니다.
이 모델은 더 이상 지속되지 않습니다. Model.ModelStreamingMode 는 제거된 플레이어의 동작에 대해 PersistentPerPlayer 로 설정해야 합니다.
모델의 크기 조정 요소를 설정하고, 모든 후손 인스턴스의 크기를 조정하여 크기 요소가 모델의 초기 크기와 위치에 비례하여 크기 요소가 1인 경우 모델의 크기를 조정합니다.
Class.Model을 주어진 Vector3 오프셋으로 이동하여 모델의 방향을 유지합니다. 다른 BasePart 또는 1>Class.Terrain1>이 이미 새로운 위치에 있으면 4>Class.Model4>는 해당 오프셋을
Class.PVInstance의 피벗을 가져옵니다.
모든 후손 PVInstance 과 함께 폼 PVInstances 으로 핵심이 이제 CFrame 에 위치 하도록 변환 합니다.
이벤트
도구가 장착되어 있을 때 플레이어가 클릭하면 화재가 발생합니다.
도구가 장착되고 활성화된 동안 플레이어가 클릭을 릴리스하면 화재가 발생합니다.
도구가 장착되면 시작합니다.
도구가 제거되면 시작됩니다.
속성
CanBeDropped
CanBeDropped 속성은 플레이어가 Tool 를 드롭할 수 있는지 여부를 제어합니다.
이 경우, 백스페이스 버튼을 누르면 도구가 Workspace에 부모로 지정되고 플레이어의 Backpack에서 제거됩니다. 만약 이 경우에도 백스페이스를 누르면 도구가 장착되지 않고 유지됩니다.
Enabled
활성화된 속성은 플레이어가 도구를 사용할 수 있는지 여부와 관련이 있습니다. 이 기능은 플레이어가 도구를 사용하지 않도록 하려는 경우에 유용합니다. Tool 을 제거하려면 그들의 Backpack 에서 이 기능을 사용하지 않도록 하십시오.
설정된 경우 true 플레이어는 도구를 사용할 수 있습니다. 설정된 경우 false 도구는 비활성화되며 플레이어는 사용할 수 없습니다; 이렇게 하
코드 샘플
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
도구의 그립 속성은 도구를 단일 Grip 로 저장하지만 이 속성은 플레이어가 도구를 들고 있는 방식을 포함하며 Class.Tool.GripUp|GripUp ,</
코드 샘플
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
캐릭터의 손에 도구의 방향을 지정하는 속성 중 하나입니다. 이는 그립 R02 , R12 및 R22 값의 회전 매트릭스를 나타냅니다.
도구를 제어하는 다른 도구 속성에는 Tool.GripUp, Tool.GripRight 및 Tool.GripPos가 포함됩니다. 이 모든 속성은 단일 1> Datatype.CFrame1> 속에 저장된 4> Class.Tool.Grip
코드 샘플
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
이 속성은 도구의 접합 매트릭스의 위치 오프셋을 제어합니다. 플레이어 캐릭터가 도구를 어떻게 들고 있는지 위치하는 데 사용되는 여러 속성 중 하나입니다.
도구를 보관하는 방법을 제어하는 다른 속성에는 Tool.GripUp, Tool.GripRight 및 Tool.GripForward가 포함됩니다. 이 모든 속성은 단일 속성 1> Datatype.CFrame1> 에 저장되어 있습
코드 샘플
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
캐릭터의 손에 도구의 방향을 지정하는 속성 중 하나입니다. 이는 그립 R00 , R10 및 R20값의 회전 매트릭스를 나타냅니다.
도구를 제어하는 다른 도구 속성에는 Tool.GripUp, Tool.GripForward 및 Tool.GripPos가 포함됩니다. 이 모든 속성은 단일 1> Datatype.CFrame1> 속에 저장된 4> Class.Tool.Grip
코드 샘플
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
캐릭터의 손에 도구의 방향을 지정하는 속성 중 하나입니다. 이는 그립 R01 , R11 및 R21값의 회전 매트릭스를 나타냅니다.
도구를 제어하는 다른 도구 속성에는 Tool.GripRight, Tool.GripForward 및 Tool.GripPos가 포함됩니다. 이 모든 속성은 1> Datatype.CFrame1> 속의 단일 4> Class.Tool.Grip4> 속
코드 샘플
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 속성은 스크립트에서 명시적으로 Tool를 호출하지 않고 Tool:Activate()를 활성화할 수 있는지 여부를 제어합니다.
설정을 참으로 설정하면 도구는 Tool.Activated 를 호출할 때만 Tool:Activate() 를 호출합니다. 이렇게 하면 ContextActionService:BindActivate() 함수가 억제됩니다.
클릭하면 도구가 장착되었을 때 Class.Tool.Activated 을 발사합니다. tool가 장착되지 않은 경우에는 발사하지 않습니다.
코드 샘플
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
이 속성은 핸들이 없는 Tool 함수를 사용할 수 있는지 여부를 결정합니다.
도구에는 핸들이 있으면 핸들이라는 이름의 자식 부품이 있습니다. 핸들이 있는 도구는 일반적으로 플레이어가 핸들을 사용하여 개체를 들고 사용하도록 하는 경우가 많습니다. 핸들이 없는 도구는 일반적으로 비행 또는 소환 도구와 같은 개체를 사용
도구는 단순히 핸들을 사용하여 설정할 때만 작동합니다. 단순히 핸들을 사용하지 않고 설정할 때도 도구는 작동합니다.
메서드
Activate
이 함수는 Tool 을 활성화하는 것을 시뮬레이션합니다. 이 도구를 장착해야 이 함수가 작동합니다.
반환
코드 샘플
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
이 함수는 Tool 의 비활성화를 시뮬레이션합니다. 이 도구를 장착해야 이 함수가 작동합니다.
반환
코드 샘플
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)
이벤트
Activated
이 이벤트는 플레이어가 장착한 동안 클릭하면 발생합니다. Tool 키가 클릭 중에 누르지 않은 경우에는 발생하지 않습니다.
이 이벤트는 플레이어가 도구를 사용할 때 일반적으로 액션을 수행하는 데 사용됩니다. 예를 들어, 로켓 발사기 무기 도구에서 로켓을 발사하는 등의 작업을 수행합니다.
아래 코드, LocalScript 에 배치되면 로컬 플레이어의 Backpack 에 도구를 생성하고, 생성된 도구를 장착하고 있는 동안 플레이어가 클릭하면 도구가 "활성화되었습니다"를 인쇄합니다.
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
이 이벤트는 플레이어가 클릭을 해제하면서 Tool 이 장비되고 활성화되면 발생합니다. 일반적으로 플레이어가 도구를 사용하지 않도록 하는 동작을 수행할 때 사용됩니다.
아래 코드, LocalScript 에 배치되면 로컬 플레이어의 Backpack 에 도구를 생성하고 도구가 장착되고 활성화된 상태에서 플레이어가 클릭을 발생시키면 도구 비활성화를 표시합니다.
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
이 이벤트는 플레이어가 Tool (그들의 Backpack 에서) 장비하면 발생합니다.
이 이벤트의 반대, Tool.Unequipped ,는 플레이어가 백팩에 도구를 넣을 때 도구를 해제하는 시간을 결정하는 데 사용됩니다.
Class.Tool.RequiresHandle가 활성화되어 있고 핸들이 없으면 이 이벤트는 발생하지 않습니다.
매개 변수
플레이어의 마우스.
코드 샘플
local Tool = script.Parent
local function onEquipped(_mouse)
print("The tool was equipped")
end
Tool.Equipped:Connect(onEquipped)
Unequipped
이 이벤트는 플레이어가 Tool (그것을 그들의 Backpack에 넣습니다) 을 해제하면 발생합니다.
이 이벤트의 반대, Tool.Equipped ,는 플레이어가 백팩에서 도구를 꺼내 장착할 때를 결정하는 데 사용됩니다.
Class.Tool.RequiresHandle가 활성화되어 있고 핸들이 없으면 이 이벤트는 발생하지 않습니다.