Class.ControllerManager 实例管理模拟动作控制,为其分配 RootPart 。 以及 ControllerPartSensors ,它可以用于构建物理基础角色控制器。
核心设置
ControllerManager 需要一个 BasePart 作为其根。移动力和零件感应将在此部分上。
将零件组成一个 Model 实例作为组织,并且与其他组件一起组成。
将 ControllerManager 实例添加到模型。如果 ControllerManager 在对象插入菜单中不初始出现,请在菜单的 插入设置 中的“1>仅显示推荐对象1>”部分进行4>取消4>。
传感器设置
一个 ControllerPartSensor 检测到与 Humanoid 使用的代码相同的零件。
作为 RootPart 的子,插入一个 Class.ControllerPartSensor 作为其目的地,并将其重命名为 1> GroundSensor1> 以便更容易识别其目的。然后,在 4> 属性4> 窗口
在 根部分 的孩子上插入另一个 Class.ControllerPartSensor 作为 1>搜索距离1> 的属性,然后在 4>属性4> 窗口中将其设置为 7>17> ,然后将其设置
控制器设置
像 GroundController 和 ClimbController 这样的控制器实例告诉管理部分如何与世界交互,在 感应器设置 中配置的传感器与您配置的传感器进行协作。
作为 Class.ControllerManager 的子女,插入 both a ClimbController 和 ControllerManager 。
选择新的 GroundController 实例,然后,在 Property 窗口中,将其 GroundOffset 属性设置为值,在管理部分上
链接引用
要完成核心设置,您需要将 ControllerManager 实例中的各个属性联合到主要 Model 中的对象。
选择ControllerManager实例。
在 属性 窗口中,单击以下属性之一,然后,在 Explorer 窗口中,单击相应实例完成关联接。
- 将 ActiveController 属性链接到 GroundController 实例。
- 将 RootPart 属性链接到您命名为 RootPart 的部分。
- 将 ClimbSensor 属性链接到 ClimbSensor 实例。
- 将 GroundSensor 属性链接到 GroundSensor 实例。
测试
使用 传感器 和 控制器 在所有位场景,以及使用 参考 连接,您可以在 Studio 测试控制器。
使用 运行 模式( F8 )开始游戏测试,因为您不需要在此场景中插入您的虚拟形象角色。
根部分 应该在您在GroundController.GroundOffset 值下悬浮在地面上。它还应该旋转以与Class.ControllerManager.FacingDirection 向矢量力对齐。
自定义传感器
Class.ControllerPartSensor.SensorMode 选项的 Floor 和 Ladder 运行正确的 1>Class.Humanoid1> 传感器代验证码,让您可以使用它们进行倒向兼容。但您也可以自定义检测可走行和可攀爬的部分的
将 ControllerPartSensor.UpdateType 从 OnRead 切换到 手动 。
- 读取时读取输出属性更新相应于您的 Class.ControllerPartSensor.SensorMode|SensorMode 每次您读取它们时。它本质上将传感器置于“只读”模式,其中您向这些属性写入的任何内容都会被其内部的感应行为覆盖。
- 手动 关闭内部感应行为。输出属性是您写代码的自由,但 SensorMode 做什么都不做。
创建一个执行您自己感应逻辑并将输出写入您的传感器输出属性的脚本。 通常您会使用空间查询,例如 WorldRoot:Raycast() 或 WorldRoot:Blockcast() ,这将返回一个 RaycastResult 。 您的脚本可以然后将结果属性设置在传感器上:
注意,您需要管理查询的运行频率并更新其感应器实例。
Class.ControllerManager 将继续使用它所分配的传感器,并且将您传递给它的数据。