능력은 캐릭터 컨트롤러 라이브러리 (CCL)에서 캐릭터가 수행할 수 있는 작업을 평가합니다. 예를 들어, 달리기, 점프, 등반, 수영할 수 있는 능력 등을 포함합니다. Enum.HumanoidStateType의 고정된 엔진 정의 캐릭터 상태에 의존하는 대신, CCL은 캐릭터가 이동하면서 조준하고 앉을 수 있는 것과 같은 유연한 행동 구성을 가능하게 합니다.
CCL 사용
CCL은 Studio의 아바타 설정 창을 통해 선택적입니다. 이를 활성화하려면:
아바타 탭에서 아바타 설정을 엽니다.

창의 왼쪽에서 움직임 탭을 선택하고, 능력 섹션에서 캐릭터 컨트롤러 라이브러리를 선택합니다.

달리기, 점프, 클라임과 같은 모든 표준 능력은 기본적으로 활성화되어 있습니다. 런타임에 이들 중 어떤 것을 비활성화하려면 관련된 박스를 체크 해제하십시오.
구성
게임이 실행되는 동안(또는 ServerScriptService에서 실행되는 스크립트를 통해), 내장된 능력 구성을 실험할 수 있습니다. 또한 특정 컨트롤러를 수정하여 캐릭터의 물리적 시뮬레이션과 환경과의 상호작용을 조정할 수 있습니다. 예를 들어, 캐릭터의 기본 이동 속도를 조정할 수 있습니다.
런타임
런타임에서 능력 구성을 실험하려면:
플레이 테스트를 시작합니다.
내장된 능력 중 하나를 선택하고, 속성 창의 속성 섹션에서 아래에 설명된 속성을 사용자 정의합니다.
능력 속성 Climbing - SpeedMultiplier — 캐릭터가 등반할 때 ClimbController.MoveSpeedFactor 속성에 대한 배수.
Dead - Enabled — 캐릭터의 건강이 0 이하일 때 사망.
- Health ⇔ Humanoid.Health
- MaxHealth ⇔ Humanoid.MaxHealth
- RequiresNeck ⇔ Humanoid.RequiresNeck
FacingMoveDirection - Enabled ⇔ Humanoid.AutoRotate
FallingDown Freefall - SpeedMultiplier — 캐릭터가 자유 낙하 중일 때 AirController.MoveSpeedFactor 속성에 대한 배수. 캐릭터가 아주 짧은 시간 동안 자유 낙하할 때 효과가 미미할 수 있습니다.
GettingUp Jumping - JumpHeight ⇔ Humanoid.JumpHeight
- JumpPower ⇔ Humanoid.JumpPower
- UseJumpPower ⇔ Humanoid.UseJumpPower
NoLocomotion Running - SpeedMultiplier — 캐릭터가 달릴 때 GroundController.MoveSpeedFactor 속성에 대한 배수.
Sitting Swimming - EnableFastRise — 점프 입력을 유지하여 더 빨리 수면으로 올라갈 수 있습니다.
- SpeedMultiplier — 캐릭터가 수영할 때 SwimController.MoveSpeedFactor 속성에 대한 배수.
스크립트
스크립트를 통해 모든 캐릭터에 대한 능력 구성을 설정하려면:
ServerScriptService 내에 새로운 서버측 Script를 만들고 이름을 AbilitiesScript로 변경합니다.
다음 코드를 새 스크립트에 복사하여 붙여넣습니다. 이 예제는 Running 능력의 기본 이동 속도를 2로 배가합니다. 위의 표에서 설명된 다른 능력 속성도 자유롭게 조정할 수 있습니다.
ServerScriptService 내 스크립트local Players = game:GetService("Players")local function onCharacterAdded(character)local AbilityManagerActor = character:WaitForChild("AbilityManagerActor")local Abilities = AbilityManagerActor:WaitForChild("Abilities")local Running = Abilities:FindFirstChild("Running")if Running then-- 기본 이동 속도를 두 배로 늘리기Running:SetAttribute("SpeedMultiplier", 2)endendlocal function onPlayerAdded(player)if player.Character thenonCharacterAdded(player.Character)endplayer.CharacterAdded:Connect(onCharacterAdded)endPlayers.PlayerAdded:Connect(onPlayerAdded)
