角色控制器

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

ControllerManager 實例管理其指定的 RootPart 的模擬動作控制。與 ControllerPartSensors 一起,可用於建立物理基礎的角色控制器。

核心設定

ControllerManager 需要一個 BasePart 作為根使用。移動力和零件感應將在這個部分上。

  1. 選擇 PartMeshPart 並命名為 根部

  2. 將零件群組為組織的Model實例,與其他零件一起。

  3. ControllerManager 實例添加到模型。如果 控制器管理器 初始不出現在對象插入選單中, 取消 在選單的 插入設定 中顯示「僅顯示建議對象」。

    ControllerManager and RootPart inside a model.

感應器設定

A 偵測使用相同代碼偵測地板和梯子的零件。

  1. 插入 ControllerPartSensor 作為 根部件 的子孫,並將其重命名為 地面感應器 以便更容易識別其用途。然後,在 屬性 窗口中,將其 SearchDistance 屬性設為 2 ,但將其 SensorMode 留為 地板

    GroundSensor as child of RootPart
  2. 插入另一個 ControllerPartSensor 作為 根部零件 的子孫,並將其重命名為 攀爬感應器 。然後,在 屬性 窗口中,將其 SearchDistance 屬性設為 1 並將其 SensorMode 設為 梯子

    ClimbSensor as child of RootPart

控制器設定

控制器實例,例如 GroundControllerClimbController 告訴管理部分如何與世界互動,與你在 感應器設定 期間配置的感應器一起工作。

  1. 插入 GroundControllerClimbController 兩個作為 ControllerManager 的孩子。

    GroundController and ClimbController as children of ControllerManager.
  2. 選擇新的 GroundController 實例,然後,在 屬性 窗口中,將其 GroundOffset 屬性設為在管理部分上方 "漂浮" 的值。重要的是,這個值必須小於 值的 地面感應器 ,因為該感應器如果失去對地面的感知並停止其力量在零件上,就會無效化。

鏈接參考

要完成核心設定,您需要將 ControllerManager 實例的各種屬性鏈接到主 Model 中的對象。

  1. 選擇 ControllerManager 實個體、實例。

    ControllerManager selected in Explorer window.
  2. 屬性 窗口中,單擊以下各個屬性,然後,返回 導航器 窗口,單擊對應的實例來完成綁定接。

    1. ActiveController 屬性鏈結到 地面控制器 個體、實例。
    2. RootPart 屬性鏈結到你命名的零件 RootPart
    3. ClimbSensor 屬性鏈結到 攀爬感應器 個體、實例。
    4. GroundSensor 屬性鏈結到 地面感應器 個體、實例。
    ControllerManager properties linked to instances within overall model

測試

配備 感應器控制器 以及 連結參考,您可以在 Studio 測試控制器。

  1. 使用 執行 模式開始遊戲測試 ( F8 ),因為你不需要在此情況下插入你的虛擬人偶角色。

    Rapid playtest options in Studio.
  2. 根部 應在你在GroundController.GroundOffset中設置的值上升空中。它也應該旋轉以與 ControllerManager.FacingDirection 向量力對齊。

    Character levitating above ground at GroundOffset, facing in direction of FacingDirection vector.
  3. 在執行階段時變更 MovingDirectionFacingDirection 向量的 ControllerManager 來實驗不同的移動和面向方向。也可以試著使用 GroundController 實例的不同屬性,例如 AccelerationTimeDecelerationTimeGroundOffset

    ControllerManager properties for moving and facing direction are highlighted.
    控制器管理器
    GroundController properties for acceleration, deceleration, and ground offset are highlighted.
    地面控制器

自訂感應器

ControllerPartSensor.SensorMode 選項的 FloorLadder 執行準確的Humanoid 感應器代碼,讓您可以使用它們進行回退兼容。然而,您也可以自定义如何和何時偵測到可行走和攀爬的零件,最終改變管理零件走路/攀爬時間。

  1. ControllerPartSensor.UpdateType閱讀 切換到 手動

    • 閱讀 會觸發輸出屬性與您的 SensorMode 每次閱讀相對應更新。它本質上將感應器置於「僅讀」模式,任何你寫入這些屬性的內容都會被其內部感應行為覆蓋。
    • 手動 關閉內部感應行為。輸出屬性是免費的,您可以寫任何您喜歡的方式,而 SensorMode 不會做任何事情。
  2. 創建一個執行自己感應邏輯的腳本,並將輸出寫入您的感應器輸出屬性。通常您會使用空間查詢,例如 WorldRoot:Raycast()WorldRoot:Blockcast() ,返回 RaycastResult 。您的腳本可以然後使用結果屬性並將它們設置為感應器等值:

    請注意,您需要管理查詢的執行頻率以及更新感應器實個體、實例。

  3. ControllerManager 將繼續使用已割り配給它的感應器,取得你傳給它的資料。