This document is about: QUANTUM 3
SWITCH TO

Processors

互動

KCC 處理器在與 KCC 互動時扮演重要角色。

KCC 支援兩種互動類型:

  • 碰撞
    • 基於物理的互動。
    • 支援常規碰撞體和觸發器。
    • 當 KCC 開始/停止與場景物件碰撞時觸發。
      • 靜態碰撞體 - 處理器資產必須連結到 Quantum 靜態碰撞體元件上的使用者資產。
      • 實體 - 必須在實體原型中新增KCC Processor Link元件並分配處理器資產。
  • 修改器
    • 透過KCC.AddModifier()KCC.RemoveModifier()手動註冊的KCCProcessor資產。

KCCProcessor宣告了兩個重要方法:

C#

public virtual bool OnEnter(KCCContext context, KCCProcessorInfo processorInfo, KCCOverlapHit overlapHit) => true;
  • 當 KCC 開始與碰撞體碰撞時叫用。
  • 返回值控制互動的開始
    • 可以延遲互動直到滿足特定條件(直到返回真才會在 KCC 中註冊)
    • 例如當玩家進入某區域且僅在滿血時獲得速度增益

C#

public virtual bool OnExit(KCCContext context, KCCProcessorInfo processorInfo) => true;
  • 當 KCC 停止與碰撞體碰撞時叫用。
  • 返回值控制互動的結束
    • 可以延遲停止互動直到滿足特定條件(在返回真之前會一直保持在 KCC 中註冊)
    • 例如當玩家進入某區域並獲得減速減益,移除會被延遲直到玩家滿血(無論玩家是否仍在該區域內)

階段

階段是一系列在處理器上執行的特定方法調用序列,由介面類型來唯一標識。

KCC 在更新期間支援以下階段:

  • IBeforeMove - 在移動開始時執行。用於配置 KCC、啟用/禁用功能、新增力等…
  • IAfterMoveStep - 在每次移動步驟(物理查詢 + 從碰撞體中脫離)後執行,並在更新碰撞命中及觸發OnEnter()/OnExit()回調之前執行。用於輕微位置修正、向量投影等…如果 KCC 移動過快(應用 CCD),此方法可能會被多次連續調用。
  • IAfterMove - 在移動結束時執行。用於應用任何後處理。

C#

public unsafe class StepUpProcessor : KCCProcessor, IAfterMoveStep
{
    public void AfterMoveStep(KCCContext context, KCCProcessorInfo processorInfo, KCCOverlapInfo overlapInfo)
    {
        // 1. Detect blocking geometry
        // 2. Push character upwards based on unapplied movement.
    }
}

預設處理器

以下功能有獨立的實現,使得它們非常容易剝離或替換為不同的實現。

環境處理器

  • 隨 KCC 附加元件提供的預設處理器。
  • 定義地面和浮空狀態的行為。
  • 沿地面切線的投影移動。
  • 簡單的加速度和摩擦力模型。
  • 自訂重力。
  • 跳躍倍率。
  • 實現IBeforeMove階段 - 用於計算所需的KCCData.DynamicVelocityKCCData.KinematicVelocity
  • 實現IAfterMoveStep階段 - 用於在每次移動步驟後重新計算屬性(例如地面上的運動速度投影)。
  • EnvironmentProcessor資產位於Assets\Photon\QuantumAddons\KCC\AssetDB\Processors
Environment Processor
環境處理器。

角色的速度由此處理器定義,可用於場景物件上模擬各種環境中的行為,如水、泥濘、冰面。

爬升處理器

  • 允許檢測台階(阻擋水平移動的幾何體,並在一定高度有可行走表面)。
  • 如果檢測到台階,KCC 會向上移動直到著地。
  • 最大台階高度由Step Height定義。
  • 向前台階檢查距離由Step Depth控制。
  • 向上移動量等於未應用的水平移動量。
  • 向上移動速度乘以Step Speed以補償水平速度的損失。
  • StepUpProcessor預製件位於Assets\Photon\QuantumAddons\KCC\AssetDB\Processors
Step-Up processor
爬升處理器。

下圖顯示檢測台階的過程:

Step up process
爬升過程。
  1. 當角色在水平方向被障礙物阻擋時,向上檢查。
  2. 向前檢查以檢測角色前方的空間是否無碰撞。
  3. 地面吸附檢查以檢測地面是否可行走。
  4. 只要所有 3 項檢查通過,角色就會持續向上移動。

地面吸附處理器

  • 允許在失去地面接觸時保持著地狀態(樓梯、不平坦地形)。
  • 如果重力不足,將角色推向地面。
  • 最大吸附距離由Snap Distance定義。
  • 向地面的移動速度由Snap Speed定義。
  • GroundSnapProcessor預製件位於Assets\Photon\QuantumAddons\KCC\AssetDB\Processors
Ground snap processor
地面吸附處理器。

下圖顯示地面吸附的過程:

Ground snap process
地面吸附過程。

角色會被 虛擬 向下推動,直到滿足以下任一條件:

  1. 角色碰到可行走地面 => KCC 保持著地並向地面移動。
  2. 角色碰到不可行走表面且無法沿其滑動 => KCC 失去著地狀態。
  3. 達到Snap Distance => KCC 失去著地狀態。
Back to top