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
  • 개요
  • 사용 방법
  • Use Strafing Animations 활성화
  • 캐릭터의 회전 방향을 카메라 방향 기준으로 설정
  • 카메라 오프셋 적용
  • 상체 애니메이션 변경
  • 활용 예시
  1. MANUAL
  2. 스크립트 메뉴얼
  3. 입력 및 조작

TPS Strafing System

Previous모바일 조작 처리Next게임 고도화

Last updated 21 days ago

개요

TPS Strafing System은 3인칭 슈팅(TPS) 게임에서 널리 사용되는 이동 방식으로, 캐릭터가 카메라의 방향을 기준으로 움직이며, 상체는 조준점을 향한 상태를 유지하고 하체는 이동 방향에 맞춰 움직입니다. 이를 통해 상하체 애니메이션이 독립적으로 재생되며, 보다 자유로운 조준 및 이동 컨트롤이 가능해집니다.

사용 방법

Use Strafing Animations 활성화

Level Browser에서 Players를 선택한 다음, Use Strafing Animations를 활성화합니다.

이 옵션이 비활성화되어 있으면 단일 이동 애니메이션이 재생됩니다.

이 옵션을 활성화할 경우, 대각선을 포함한 상하좌우 8방향 애니메이션이 이동 방향에 맞춰 재생됩니다. 이를 통해 게걸음(Strafing), 후진, 대각선 이동 등 다양한 방향의 이동이 자연스럽게 표현됩니다.

Use Strafing Animations 옵션만 단독으로 활성화했을 경우, 시각적인 차이가 뚜렷하지 않을 수 있습니다. 이 기능은 아래의 설정들과 함께 사용해야 효과를 제대로 확인할 수 있습니다.

캐릭터의 회전 방향을 카메라 방향 기준으로 설정

UserGameSettings의 RotationType을 CameraRelative로 설정하여 캐릭터가 카메라 방향을 기준으로 회전하게 설정합니다.

(기존 설정으로 복구하려면 Enum.RotationType.MovementRelative로 설정하면 됩니다.)

StarterCharacterScripts에서 LocalScript로 아래의 코드 작성:

local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer

repeat wait() until LocalPlayer.Character
local Character = LocalPlayer.Character
local Humanoid = Character:WaitForChild("Humanoid")

local UserGameSettings = UserSettings().GameSettings
UserGameSettings.RotationType = Enum.RotationType.CameraRelative

Use Strafing Animations 옵션이 활성화된 상태에서 캐릭터의 회전 방향을 카메라 기준(CameraRelative)으로 설정하면, 캐릭터는 항상 카메라 방향을 바라보게 됩니다. 이를 통해 상체는 카메라(조준 방향)을 기준으로, 하체는 이동 방향을 기준으로 각각 독립적인 애니메이션이 재생됩니다.

RotationType이 CameraRelative로 설정된 경우, 캐릭터가 카메라 방향을 따라 회전하는 속도는 CharacterTurnRateWhenUsingCameraRelative 값을 통해 조절할 수 있습니다. (이 값의 기본값은 -1이며, 이는 즉시 회전함을 의미합니다.)

UserGameSettings.CharacterTurnRate = 200

카메라 오프셋 적용

CameraOffset 속성으로 카메라의 상대 위치를 설정할 수 있습니다. 특히 TPS 게임에서는 캐릭터를 화면 중앙에서 약간 벗어난 위치에 배치함으로써, 조준점과 캐릭터가 시각적으로 겹치지 않도록 설정하는 데 활용됩니다.

StarterCharacterScripts에서 LocalScript로 아래의 코드 작성:

local Workspace = game:GetService("Workspace")
local Camera = Workspace:WaitForChild("Camera")

Camera.CameraOffset = Vector3.new(90, 90, -120)

상체 애니메이션 변경

Use Strafing Animations 옵션과 무관하게 캐릭터는 상체와 하체 애니메이션을 분리하여 재생할 수 있습니다. 애니메이션 트랙의 UpperBodyAnimation 속성을 true로 설정하면, 해당 애니메이션은 상체에만 적용되어 재생됩니다.

StarterCharacterScripts에서 LocalScript로 아래의 코드 작성:

local Animation = Instance.new("Animation")
Animation.AnimationId = "BasicHandgunIdleAnimation"

local Animator = Humanoid:FindFirstChild("Animator")
local AnimationTrack = Animator:LoadAnimation(Animation)
AnimationTrack.UpperBodyAnimation = true

AnimationTrack.Looped = true
AnimationTrack:Play()

Use Strafing Animations 옵션과 UpperBodyAnimation을 함께 사용하면, 상체는 조준 방향, 하체는 이동 방향을 기준으로 동작하여 보다 자연스럽고 역동적인 캐릭터 애니메이션을 구현할 수 있습니다.

활용 예시

  • 총기 장착 여부에 따른 RotationType 설정

    • 총기를 장착하지 않은 상태에서는 MovementRelative로 설정하여 일반 이동 처리

    • 총기를 장착한 상태에서는 CameraRelative로 설정하여 시야 고정 이동 처리

  • 투척류 무기를 장착한 상태에서 조준 여부에 따른 RotationType 설정

    • 미조준시에는 MovementRelative로 설정하여 일반 이동 처리

    • 조준시에는 CameraRelative로 설정하여 시야 고정 이동 처리

  • 무기 종류별로 CameraOffset를 다르게 처리

📝
Use Strafing Animations 비활성화
Use Strafing Animations 활성화