在 角色控制器库 (CCL) 中,一个核心的 ControllerManager 实例处理角色的物理模拟及其与环境的交互。这包括多个旨在解决传统 Humanoid 不一致性的运动/感觉上的有意更改,以及物理改进,如地面摩擦、线性加速度曲线和在跳跃时线性和角动量的真实保持。
启用 CCL
CCL是通过Studio的头像设置窗口自选的。要启用它:
在头像标签中,打开头像设置。

在窗口左侧选择移动标签,然后在能力部分选择角色控制器库。

所有标准能力如奔跑、跳跃和攀爬默认启用。要在运行时禁用其中任何一个,请取消选中相关框。
结构
在角色模型中的核心 ControllerManager 实例下,各个控制器(如 GroundController 和 AirController)定义了如何将运动应用于角色。能力随后与 ControllerManager 及其子类交互,以修改控制器行为或在控制器之间切换。

配置
在您的游戏运行期间(或通过从 ServerScriptService 运行的脚本),您可以实验核心 ControllerManager 和内置控制器。
运行时
要在运行时实验控制器配置:
开始一次游戏测试。
在 资源管理器 中,找到 Workspace 中的角色模型,然后展开 ControllerManager 树:

选择 ControllerManager 或其某个控制器子类,并在 属性 窗口中自定义下表中概述的属性(请注意,这些表并不详尽;有关其他属性选项,请查阅 API 类文档)。
属性 描述 BaseMoveSpeed 所有控制器使用的 基础 线性移动速度。控制器通过它们的 MoveSpeedFactor 属性单独自定义移动速度。 BaseTurnSpeed 所有控制器用于使角色面向所需方向的 基础 角转速。某些控制器通过它们的 TurnSpeedFactor 属性单独自定义转速。 UpDirection 指示 ControllerManager.RootPart 向上的向量的 Vector3。
脚本化
要通过脚本为所有角色设置控制器配置:
在 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)