Dans la Bibliothèque de Contrôleurs de Personnage (CCL), une instance principale de ControllerManager gère la simulation physique du personnage et son interaction avec l'environnement. Cela inclut plusieurs changements intentionnels dans le mouvement/ressenti conçus pour résoudre les incohérences héritées de Humanoid, ainsi que des améliorations physiques telles que la friction au sol, les courbes d'accélération linéaire, et la conservation réaliste de la quantité de mouvement linéaire et angulaire lors des sauts.
Activer CCL
Le CCL est optionnel via la fenêtre Paramètres d'Avatar de Studio. Pour l'activer :
Dans l'onglet Avatar, ouvrez Paramètres d'Avatar.

Sélectionnez l'onglet Mouvement sur le côté gauche de la fenêtre et, dans la section Compétences, sélectionnez Bibliothèque de Contrôleur de Personnage.

Toutes les compétences standard comme Course, Saut et Escalade sont activées par défaut. Pour désactiver l'une d'elles au moment de l'exécution, décochez la case associée.
Structure
Sous l'instance principale de ControllerManager au sein du modèle de personnage, des contrôleurs individuels tels que GroundController et AirController définissent comment le mouvement est appliqué au personnage. Les capacités interagissent alors avec le ControllerManager et ses descendants pour modifier les comportements des contrôleurs ou passer d'un contrôleur à l'autre.

Configuration
Tandis que votre jeu est en cours (ou via un script qui s'exécute depuis ServerScriptService), vous pouvez expérimenter avec le ControllerManager principal et les contrôleurs intégrés.
À l'exécution
Pour expérimenter avec les configurations de contrôleurs à l'exécution :
Commencez un test de jeu.
Dans l'Explorateur, localisez le modèle de personnage dans le Workspace et développez l'arborescence ControllerManager :

Sélectionnez soit le ControllerManager, soit l'un de ses descendants de contrôleur et, dans la fenêtre Propriétés, personnalisez des propriétés telles que celles résumées dans les tableaux ci-dessous (notez que ces tableaux ne sont pas exhaustifs ; veuillez consulter la documentation des classes API pour d'autres options de propriétés).
Propriété Description BaseMoveSpeed La vitesse de mouvement linéaire de base utilisée par tous les contrôleurs. Les contrôleurs personnalisent individuellement la vitesse de mouvement à travers leur propriété MoveSpeedFactor. BaseTurnSpeed La vitesse de rotation de base utilisée par tous les contrôleurs pour aligner le personnage dans la direction désirée. Certains contrôleurs personnalisent individuellement la vitesse de rotation à travers leur propriété TurnSpeedFactor. UpDirection Vector3 qui indique le vecteur dirigé vers le haut pour le ControllerManager.RootPart.
Scripté
Pour définir des configurations de contrôleurs pour tous les personnages à travers un script :
Créez un nouveau Script côté serveur dans ServerScriptService et renommez-le ControllerScript.
Copiez et collez le code suivant dans le nouveau script. Cet exemple augmente la vitesse de mouvement/rotation au sol tout en ajoutant un léger temps d'accélération et de décélération. N'hésitez pas à ajuster d'autres propriétés telles que celles décrites dans les tableaux ci-dessus ou pour chaque classe comme documenté (ControllerManager; GroundController; AirController; ClimbController; SwimController).
Script dans ServerScriptServicelocal Players = game:GetService("Players")local function onCharacterAdded(character)local ControllerManager = character:FindFirstChildWhichIsA("ControllerManager")if ControllerManager thenlocal GroundController = ControllerManager:FindFirstChild("GroundController")if GroundController then-- Doublez les vitesses de mouvement et de rotationGroundController.MoveSpeedFactor *= 2GroundController.TurnSpeedFactor *= 2-- Ajoutez un léger temps d'accélération et de décélérationGroundController.AccelerationTime = 0.2GroundController.DecelerationTime = 0.4endendendlocal function onPlayerAdded(player)if player.Character thenonCharacterAdded(player.Character)endplayer.CharacterAdded:Connect(onCharacterAdded)endPlayers.PlayerAdded:Connect(onPlayerAdded)