This document is about: FUSION 1
SWITCH TO

This page is a work in progress and could be pending updates.

Overview

Level 4

概述

運動學角色控制器(Kinematic Character Controller,簡稱KCC)可以使角色在沒有實體的情況下根據約束條件(例如碰撞)進行運動。盡管KCC不受物理力的影響,但它會在受到碰撞約束的情況下進行運動。

Fusion的高級KCC插件是一個通用的、相對基本的角色控制器解決方案,不專針對任何遊戲類型。它的目的是與任何Fusion項目乾淨利落地整合,盡可能地減少摩擦或浮腫。

如何進行

要使用KCC,請遵循以下步驟:

  1. 創建Prefabs/KCC.prefab的prefab變數,或者創建一個新的對象並添加KCC組件
  2. 設置所需的設置(半徑、高度...)
  3. 在設置/處理器中鏈接KCC處理器(默認的地面/空中處理器在Prefabs文件夾中可用)
  4. 使用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個)來混合任何類型的非現實運動。

最終的理想速度是動態和運動速度的總和。

已知問題

  • 當與多個碰撞器(尤其是凹形網狀碰撞器)碰撞時,退化算法有時會失敗,導致輕微的抖動。
  • 階梯檢測目前是基於射線傳輸的,它不能提供足夠的質量。這將通過形狀重疊來解決。
Back to top