Creator Guide
Korean
Korean
  • OVERDARE
    • 🚩OVERDARE 소개
    • 🐤시작하기
      • OVERDARE App
      • OVERDARE Studio
    • 📌운영 정책
      • 커뮤니티 가이드라인
      • UGC 콘텐츠 제작 가이드라인
      • UGC의 외부 활용 가이드라인
      • LOGO 활용 가이드라인
      • 지식 재산권 정책
      • 신고 안내
      • 콘텐츠 제재 이의 신청 안내
      • 크리에이터 정산 정책
      • OVERDARE 수익화 가이드라인
    • 🅰️OVERDARE Glossary
  • MANUAL
    • 🏰스튜디오 메뉴얼
      • 시작하기
        • 스튜디오 인터페이스
        • 월드 템플릿
        • 좌표계
        • 스튜디오 테스트 플레이
        • 월드 퍼블리시
        • Collaboration
      • 에셋 & 리소스 제작
        • 에셋 임포트
        • 애니메이션 에디터
      • 게임 제작
        • 게임 설정
        • 스크립트 에디터
        • 정렬
        • Material Manager
        • Collision Groups
        • Tag Editor
        • 퍼포먼스 가이드
      • Object
        • 파트
        • 모델
        • 카메라
        • 물리
        • 조명
        • Tool
        • VFX
        • Sound
      • 캐릭터
        • 캐릭터 애니메이션
        • Humanoid Description
      • GUI
    • 📝스크립트 메뉴얼
      • 시작하기
        • 스크립트 개요
        • 루아 기초 가이드
        • 코딩 스타일
        • 오브젝트 참조
        • 유니티 개발자용 가이드
      • 이벤트 및 통신
        • 이벤트
        • 서버-클라 통신
        • BindableEvent
        • Value Objects
      • 입력 및 조작
        • 모바일 조작 처리
        • TPS Strafing System
      • 게임 고도화
        • Saving & Loading Data
        • 트윈
        • 모듈 스크립트
      • 디버깅 & 최적화
        • 중단점
        • 스크립트 최적화 실전 가이드
  • 💸수익화
    • Payout Guideline
  • DEVELOPMENT
    • 📚API Reference
      • Enums
        • ActuatorRelativeTo
        • AnimationPriority
        • AspectType
        • AssetTypeVerification
        • BorderMode
        • CameraMode
        • CameraType
        • ContextActionResult
        • CoreGuiType
        • DominantAxis
        • EasingDirection
        • EasingStyle
        • ForceLimitMode
        • HttpCompression
        • HttpContentType
        • HumanoidDisplayDistanceType
        • HumanoidStateType
        • KeyCode
        • Material
        • MaterialPattern
        • NormalId
        • ParticleEmitterShape
        • ParticleEmitterShapeInOut
        • ParticleEmitterShapeStyle
        • ParticleFlipbookLayout
        • ParticleFlipbookMode
        • ParticleOrientation
        • PartType
        • PlaybackState
        • RaycastFilterType
        • RollOffMode
        • RotationType
        • UserInputState
        • UserInputType
        • VelocityConstraintMode
      • DataTypes
        • BlendSpaceSampleSata
        • BrickColor
        • CFrame
        • Color3
        • ColorSequence
        • ColorSequenceKeypoint
        • Content
        • Enum
        • EnumItem
        • NumberRange
        • NumberSequence
        • NumberSequenceKeypoint
        • OverlapParams
        • PhysicalProperties
        • Ray
        • RaycastParams
        • RaycastResult
        • ScriptConnection
        • ScriptSignal
        • TweenInfo
        • Udim
        • Udim2
        • Vector2
        • Vector3
      • Classes
        • Animation
        • AngularVelocity
        • AnimationTrack
        • Animator
        • Atmosphere
        • Attachment
        • Backpack
        • BackpackItem
        • BasePart
        • BaseScript
        • Beam
        • BindableEvent
        • BlendSpace
        • BoolValue
        • Bone
        • Camera
        • CharacterMesh
        • CollectionService
        • Constraint
        • ContextActionService
        • CoreGui
        • DataStore
        • DataModel
        • DataStoreGetOptions
        • DataStoreIncrementOptions
        • DataStoreInfo
        • DataStoreKeyPages
        • DataStoreKeyInfo
        • DataStoreService
        • DataStoreListingPages
        • DataStoreSetOptions
        • FormFactorPart
        • Frame
        • Folder
        • GlobalDataStore
        • GuiBase2d
        • GuiButton
        • GuiObject
        • HttpService
        • Humanoid
        • HumanoidDescription
        • ImageButton
        • ImageLabel
        • InputObject
        • IntValue
        • LayerCollector
        • Instance
        • Light
        • Lighting
        • LinearVelocity
        • LocalScript
        • LuaSourceContainer
        • MaterialService
        • MaterialVariant
        • MeshPart
        • Model
        • ModuleScript
        • Mouse
        • OrderedDataStore
        • Pages
        • Part
        • ParticleEmitter
        • PhysicsService
        • Player
        • PlayerGui
        • Players
        • PlayerScripts
        • PointLight
        • PVInstance
        • ReplicatedStorage
        • RemoteEvent
        • ScreenGui
        • RunService
        • Script
        • ServerStorage
        • ServiceProvider
        • Skeleton
        • ServerScriptService
        • Sound
        • SoundService
        • SoundGroup
        • SpotLight
        • SpawnLocation
        • StarterCharacterScripts
        • StarterPack
        • StarterGui
        • StarterPlayer
        • StarterPlayerScripts
        • StringValue
        • SurfaceGui
        • SurfaceGuiBase
        • Team
        • Teams
        • TextLabel
        • TextButton
        • Tool
        • Trail
        • Tween
        • TweenService
        • TweenBase
        • UIAspectRatioConstraint
        • UserGameSettings
        • UserInputService
        • UserSettings
        • VectorForce
        • Workspace
        • WrapLayer
        • WorldRoot
        • WrapTarget
  • UPDATE
    • 📰Release Note
Powered by GitBook
On this page
  • 개요
  • Tool의 동작 원리
  • Tool의 속성
  • Tool의 사용 방법
  • 1. Tool 인스턴스 생성
  • 2. Tool 장착 테스트
  • 스크립트를 통한 Tool 장착 및 해제
  • 스크립트를 사용해야 하는 경우
  • Tool 장착을 위한 방법
  • Tool 해제
  • 이벤트를 활용한 Tool 상호작용 응용
  1. MANUAL
  2. 스튜디오 메뉴얼
  3. Object

Tool

개요

Tool은 캐릭터가 직접 장착하여 사용할 수 있도록 설계된 Instance입니다. 이를 활용하면 캐릭터는 무기나 장비를 손에 들거나, 포션과 같은 아이템의 사용을 구현할 수 있습니다. Tool은 장착과 해제의 과정을 통해 캐릭터와 상호작용하며, 다양한 게임플레이 시나리오에서 중요한 역할을 수행합니다.

Tool의 동작 원리

  • Tool은 캐릭터 모델과 직접 상호작용하여 장착과 해제를 구현합니다.

  • 캐릭터의 오른손에 장착되며, 이를 위해 반드시 Handle Part를 생성해야 합니다.

  • Handle이 없는 Tool을 만들 수는 있지만, 스크립트를 통해서만 장착시킬 수 있습니다.

  • Handle을 기준으로 Tool을 구성하는 MeshPart 및 다른 Part의적절한 위치 조정을 할 수 있습니다.

Tool의 속성

아래는 주요 속성 및 관련 설명입니다:

속성
설명

TextureId

Backpack GUI에서 보여지는 Tool의 이미지를 지정합니다.

CanBeDropped

Tool의 Parent를 Workspace로 변경 하였을 때, 자동으로 플레이어 앞으로 Tool을 드롭여부를 결정합니다.

Enabled

Enabled 속성은 Tool을 플레이어가 사용할 수 있는지 여부를 설정하며, false로 설정하면 Tool의 활성화/비활성화 메서드와 관련된 이벤트가 차단되어 플레이어가 Tool을 사용할 수 없게 됩니다.

Grip

캐릭터가 Tool을 장착할 때의 손잡이 위치를 설정합니다. (CFrame 이용)

GripForward

그립이 바라보는 방향으로, Grip CFrame 회전 행렬의 R02, R12, R22 값을 나타내며, GripUp, GripRight, GripPos 속성과 함께 Tool.Grip 속성의 CFrame 형태로 저장됩니다.

GripPos

그립의 위치로 Handle에서의 그립 위치를 결정합니다.

GripRight

그립의 측면 방향으로, Grip CFrame 회전 행렬의 R00, R10, R20 값을 나타내며, GripUp, GripForward, GripPos 속성과 함께 Tool.Grip 속성의 CFrame 형태로 저장됩니다.

GripUp

그립의 상단 방향으로, Grip CFrame 회전 행렬의 R01, R11, R21 값을 나타내며, GripRight, GripForward, GripPos 속성과 함께 Tool.Grip 속성의 CFrame 형태로 저장됩니다.

ManualActivationOnly

ManualActivationOnly 속성은 Tool:Activate()를 스크립트에서 명시적으로 호출해야만 Tool.Activated 이벤트가 발생하도록 제어할지 여부를 결정합니다.

Tool의 사용 방법

1. Tool 인스턴스 생성

  1. 레벨 브라우저(Workspace)에서 Tool 인스턴스를 생성합니다.

  2. Tool 하위에 Part를 생성 후, 해당 이름을 Handle로 수정합니다.

  3. 손에 장착될 도구인 MeshPart 또는 Part를 Handle 하위에 배치하고, 도구의 손잡이 위치를 기준으로 CFrame을 조정하여 올바른 장착 위치를 설정합니다.

2. Tool 장착 테스트

  1. 게임을 실행하고 캐릭터를 조작합니다.

  2. Workspace에 배치한 Tool을 캐릭터가 Touch(접촉) 하도록 만듭니다.

  3. Handle에 접촉하면 캐릭터가 해당 Tool을 오른손에 들게 됩니다.

    • 정상적인 위치에 장착되지 않을 경우, Handle 하위의 MeshPart 또는 Part의 위치와 방향을 수정하여 재조정합니다.

스크립트를 통한 Tool 장착 및 해제

스크립트를 사용해야 하는 경우

어떤 트리거(Trigger)나 조건을 만족할 때만 Tool을 장착해야 하는 상황이 있을 수 있습니다. 이 경우, 스크립트를 통해 프로그래밍적으로 Tool을 장착하거나 해제할 수 있습니다.

Tool 장착을 위한 방법

스크립트를 활용하면 아래 두 가지 방식으로 Tool을 캐릭터에게 장착할 수 있습니다:

  1. Humanoid:EquipTool 메서드를 호출

    • 다음 메서드를 통해 캐릭터가 직접 Tool을 장착하도록 구현할 수 있습니다.

    • 예제 코드:

local function Equip(player)
     local character = player.Character or player.CharacterAdded:Wait()
     local humanoid = character:FindFirstChild("Humanoid")
     local myTool = game.Workspace:FindFirstChild("MyTool")

     if humanoid and myTool then
         humanoid:EquipTool(myTool)
     end
end
  1. Tool.Parent 변경

  • Tool의 부모 오브젝트를 직접 변경하여 장착하도록 설정할 수 있습니다.

  • 예제 코드:

local function Equip(player)
     local myTool = game.Workspace:FindFirstChild("MyTool")
     local character = player.Character

     if character and myTool then
         myTool.Parent = Character
     end
end

Tool 해제

Tool을 해제하는 방법은 크게 두 가지입니다:

  1. 기본 해제: 캐릭터가 Tool 해제 후 Backpack에 다시 보관됩니다.

  2. 삭제(Destroy): 필요 없는 Tool 인스턴스를 삭제할 수도 있습니다.

    • 예제 코드:

     local myTool = game.Workspace:FindFirstChild("MyTool")
     if myTool then
         myTool:Destroy()
     end
  1. 내려놓기(Drop) :CanBeDropped가 True인 경우 Tool의 Parent를 Workspace로 지정하여 플레이어 앞에 내려놓을 수 있습니다.

    • 예제 코드:

     local myTool = game.Workspace:FindFirstChild("MyTool")
     if myTool then
         myTool.Parent = game.Workspace
     end

이벤트를 활용한 Tool 상호작용 응용

Tool에는 장착 시 호출되는 다양한 이벤트가 존재합니다. 이를 활용하면 캐릭터가 특정 Tool을 장착할 때 특정한 시각 효과(VFX)나 동작을 추가적으로 구현할 수 있습니다.

  1. ParticleEmitter 생성: Handle또는 파티클 효과가 나타나야 하는 위지에 ParticleEmitter를 추가합니다.

  2. ParticleEmitter 속성 편집 : 패티클의 크기, 방향, 파티클 개수 등 파티클 관련 설정을 조정합니다.

  3. ParticleEmitter Enabled 비활성화 : 완성된 ParticleEmitter Enabled를 false로 변경하여 장착 전에는 파티클 효과가 발생하지 않도록 합니다.

  4. 스크립트 작성: 무기가 장착되었을 때에만 ParticleEmitter 활성화 되도록 스크립트를 작성합니다.

local Tool = script.Parent
local Emitter = Tool.Handle.LightSaber.ParticleEmitter
Tool.Equipped:Connect(function()   
     if Emitter then
         Emitter.Enabled = true
     end
 end)
 
 Tool.Unequipped:Connect(function()   
     if Emitter then
         Emitter.Enabled = false
     end
 end)
Previous조명NextVFX

Last updated 2 months ago

🏰