在 RealityKit 內建的幾種動作當中,功能最豐富的應該是 FromToByAction,這是個通用化的動作物件,只要是可用內插法分解的個體參數,都能製作動畫效果。

目前支援的參數類型包括:

  1. Float — 32位元浮點數
  2. Double — 64位元實數
  3. Transform — 座標變換(位移、旋轉、縮放)
  4. simd_quatf — 四元數
  5. simd_float2/3/4 — 2/3/4維向量(參考補充(18) SIMD in RealityKit

FromToByAction 的本義是「從(From)、到(To)、差值(By)」三個條件,三者可單獨使用,也能並用。

例如,以個體的透明度(opacity)為例,假設個體原本的透明度為 1.0 (完全不透明),單獨設定三種條件的預期結果如下:

動作# 參數 含義 結果
1 from: 0.1 從0.1回到原值 動作會從 opacity = 0.1 逐漸回到 1.0
2 to: 0.1 從原值變到0.1 動作會從 opacity = 1.0 逐漸降到 0.1
3 by: -0.1 從原值降0.1 動作會從 opacity = 1.0 逐漸降到 0.9

不過要注意,實際寫程式時,FromToByAction 有個隱藏陷阱。若按一般習慣寫:

let 淡出 = FromToByAction(to: 0.1)

語法雖然正確,但執行時可能完全沒有動畫效果。

正確的寫法要改成:

let 淡出 = FromToByAction<Float>(to: 0.1)  // 官方文件寫法
或
let 淡出 = FromToByAction(to: Float(0.1))  // 本節範例寫法