캐릭터 컨트롤러 라이브러리 (CCL)에서 핵심 ControllerManager 인스턴스는 캐릭터의 물리 시뮬레이션과 환경과의 상호작용을 처리합니다. 여기에는 유산 Humanoid 불일치를 해결하기 위해 고안된 움직임/느낌에서의 몇 가지 의도적인 변경 사항과 점프 시의 질량 및 각 운동량의 현실적인 보존, 바닥 마찰, 선형 가속 커브와 같은 물리적 개선이 포함됩니다.
CCL 활성화
CCL은 Studio의 아바타 설정 창을 통해 선택적입니다. 이를 활성화하려면:
아바타 탭에서 아바타 설정을 엽니다.

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

달리기, 점프, 클라임과 같은 모든 표준 능력은 기본적으로 활성화되어 있습니다. 런타임에 이들 중 어떤 것을 비활성화하려면 관련된 박스를 체크 해제하십시오.
구조
캐릭터 모델 내의 핵심 ControllerManager 인스턴스 아래에서 개별 컨트롤러인 GroundController 및 AirController는 캐릭터에 적용되는 이동 방식을 정의합니다. 능력은 이후 ControllerManager 및 그 자식과 상호작용하여 컨트롤러 동작을 수정하거나 컨트롤러 간 전환을 수행합니다.

구성
게임이 실행 중일 때(또는 ServerScriptService에서 실행되는 스크립트를 통해) 핵심 ControllerManager 및 내장 컨트롤러를 실험할 수 있습니다.
런타임
런타임에서 컨트롤러 구성을 실험하려면:
플레이 테스트를 시작합니다.
탐색기에서 Workspace에 있는 캐릭터 모델을 찾아 ControllerManager 트리를 확장합니다:

ControllerManager 또는 그 자식 컨트롤러 중 하나를 선택하고 속성 창에서 다음 표에 요약된 속성과 같이 속성을 사용자 정의합니다(이 표는 전체가 아니므로 추가 속성 옵션에 대해서는 API 클래스 문서를 참조하십시오).
속성 설명 BaseMoveSpeed 모든 컨트롤러에서 사용되는 기본 선형 이동 속도. 컨트롤러는 각각 MoveSpeedFactor 속성을 통해 이동 속도를 사용자 정의합니다. BaseTurnSpeed 캐릭터가 원하는 방향을 향하도록 정렬하는 데 사용되는 모든 컨트롤러의 기본 각도 회전 속도. 일부 컨트롤러는 그들의 TurnSpeedFactor 속성을 통해 회전 속도를 각각 사용자 정의합니다. UpDirection Vector3로 ControllerManager.RootPart의 위쪽을 향하는 벡터를 나타냅니다.
스크립트
스크립트를 통해 모든 캐릭터에 대한 컨트롤러 구성을 설정하려면:
ServerScriptService 내에 새로운 서버 사이드 Script를 생성하고 이를 ControllerScript로 이름을 변경합니다.
다음 코드를 새 스크립트에 복사하여 붙여 넣습니다. 이 예시는 지상에서의 이동/회전 속도를 증가시킬 뿐만 아니라 약간의 가속 및 감속 시간을 추가합니다. 위의 표에 설명된 다른 속성이나 각 클래스에서 설명된 속성을 조정할 수 있습니다(ControllerManager; GroundController; AirController; ClimbController; SwimController).
ServerScriptService의 스크립트local Players = game:GetService("Players")local function onCharacterAdded(character)local ControllerManager = character:FindFirstChildWhichIsA("ControllerManager")if ControllerManager thenlocal GroundController = ControllerManager:FindFirstChild("GroundController")if GroundController then-- 이동 및 회전 속도를 두 배로 증가GroundController.MoveSpeedFactor *= 2GroundController.TurnSpeedFactor *= 2-- 약간의 가속 및 감속 추가GroundController.AccelerationTime = 0.2GroundController.DecelerationTime = 0.4endendendlocal function onPlayerAdded(player)if player.Character thenonCharacterAdded(player.Character)endplayer.CharacterAdded:Connect(onCharacterAdded)endPlayers.PlayerAdded:Connect(onPlayerAdded)