This page is a work in progress and could be pending updates.
Overview
概述
運動學角色控制器(Kinematic Character Controller,簡稱KCC)可以使角色在沒有實體的情況下根據約束條件(例如碰撞)進行運動。盡管KCC不受物理力的影響,但它會在受到碰撞約束的情況下進行運動。
Fusion的高級KCC插件是一個通用的、相對基本的角色控制器解決方案,不專針對任何遊戲類型。它的目的是與任何Fusion項目乾淨利落地整合,盡可能地減少摩擦或浮腫。
如何進行
要使用KCC,請遵循以下步驟:
- 創建Prefabs/KCC.prefab的prefab變數,或者創建一個新的對象並添加KCC組件
- 設置所需的設置(半徑、高度...)
- 在設置/處理器中鏈接KCC處理器(默認的地面/空中處理器在Prefabs文件夾中可用)
- 使用KCC公共API來設置輸入屬性
任何向KCC提供交互的對象都必須有NetworkObject
組件。
N.B.: 在深入了解KCC的內部結構之前,請先查看KCC樣本項目(獨立的軟件包)-它有完整的代碼和測試空間。
下載
版本 | 發佈日期 | 下載 | |
---|---|---|---|
1.1.13 | Jan 24, 2024 | Fusion KCC 1.1.13 Build 400 |
功能摘要
- 對位置和外觀旋轉(俯仰+偏航)的完全控制。
- 膠囊碰撞器的物理查詢和衰減。
- 對聯網的代理進行插值渲染,對具有輸入或狀態授權的對象進行外推渲染和完全模擬。
- 結合動態(類似物理學)和運動學(非現實的)速度的運動。
- 支持無約束的外力-加速度、速度、力、衝擊力。
- 地面和空中的基本實現,具有可配置的運動學加速度和摩擦力模型(兩者都可以作為高級範例來處理)。
- 具有”階段”和”處理器”的流水線。在每個階段,KCC處理器計算不同的屬性(切線、速度、速率......),然後用於以下階段/物理查詢/後計算。
- 處理器可以直接作為預制板(可共享,必須是無狀態的)或場景對象(可以是有狀態的網路屬性)使用。
- 嵌入式支持兩種類型的交互-手動註冊("KCC Modifier")和基於碰撞("KCC Collision")。交互是將處理器注入運動計算管道的默認方式。
- 支持處理器的優先級(執行順序)和抑制 - 這允許處理器鏈中的屬性的絕對、加法、乘法或混合計算。
- 同步網路屬性的基本設置(半徑、高度、質量......),其他屬性的同步是可選的。
- 自定義碰撞器過濾呼叫返回,忽略子碰撞器。
- 自定義碰撞器忽略列表(聯網的)。
- 連續碰撞檢測。
- 碰撞進入/退出的呼叫返回,用於授權。
- KCC碰撞器的單獨遊戲對象-在執行時創建的子對象。
- 支持地形碰撞器。
- 支持地面抓取和步高。
- 自動/手動執行更新方法,支持本地非聯網的KCC。
- 可擴展的數據結構。
- 池兼容。
- 網路與性能優化。
- 平台獨立,移動友好。
- 完全註釋範例與測試空間(單獨軟體包)。
- 對逐幀調試的基本支持 - 編輯器繪圖和記錄。
外推式運動的主要優點和缺點
優點:
- 對輸入的立即響應。
- 在視覺上幾乎不受網路條件的影響。
缺點:
- 渲染幀中模擬的額外CPU壓力。
- 在渲染更新中基於Delta時間的累積可能與固定更新不一致,因為Delta時間是可變的。
- 需要外推誤差修正。
更新插件
推薦的方法是在導入新的KCC包之前刪除KCC根文件夾(Assets > Photon > FusionAddons > KCC
)。在大多數情況下,KCC與Fusion SDK的較新版本是向前兼容的。
如果在更新到較新的Fusion SDK時出現問題(編譯錯誤,行為損壞,......),請聯繫最近的Photonian。
擴展
KCC和它的數據結構準備通過部分執行來進行擴展。
這允許您在不觸及我們的文件的情況下編寫自定義功能,擴展公共API,並能訪問私有數據進行進一步處理(要小心)。
這也使得更新過程更加容易,沒有衝突。
部分執行可以在這些類別上使用:
- KCC - 擴展API,通過InitializeUserNetworkProperties()設置網路化屬性
- KCCData - 添加自定義的可回滾的屬性,用於處理器(和一般的運動更新)
- KCCSettings - 添加自定義設置
- KCCInteraction
- 添加自定義的獲取器,用於進一步過濾或提取所有交互的數據 - KCCCollision - 添加自定義的獲取器,用於進一步過濾或提取碰撞的數據
- KCCModifier-添加自定義獲取器,用於進一步過濾或提取修改器中的數據
- 所有KCC擴展和實用類別
更多細節和擴展範例,請參見KCC範例項目(獨立的軟件包)。
動態速度與運動速度
動態速度的設計是為了模仿類似物理學的行為,主要由力驅動。KCC提供一個單一的階段來計算它。
另一方面,運動速度的設計涵蓋了所有其他運動速度,並提供了更多的階段(4個)來混合任何類型的非現實運動。
最終的理想速度是動態和運動速度的總和。
已知問題
- 當與多個碰撞器(尤其是凹形網狀碰撞器)碰撞時,退化算法有時會失敗,導致輕微的抖動。
- 階梯檢測目前是基於射線傳輸的,它不能提供足夠的質量。這將通過形狀重疊來解決。