Wiki
726 words
4 minutes
样条曲线 spline
Updated 2025-04-18

样条曲线 spline#

【重点】样条曲线组件通常指 USplineComponent。它的核心作用是用一组控制点描述一条连续路径,并且允许你沿着这条路径做位置、朝向、切线和距离采样。

它适合解决什么问题#

当你不想手写一堆路径点插值逻辑时,样条是非常实用的现成工具,常见场景包括:

  • 角色或相机沿轨道移动
  • 投射物 / 飞行物走曲线路径
  • 道路、河流、管线这类连续形状
  • 特效沿路径生成
  • 指引线、拖尾、轨迹预览

基础组成#

一条样条通常由这些概念组成:

  • 控制点:决定路径经过哪里
  • 切线:影响拐弯的方向和平滑程度
  • 距离参数:允许按“沿路径前进了多少”来采样,而不只是按点索引

【重点】你可以把它理解成“可编辑、可采样的路径数据结构”。

常见采样方式#

运行时最常见的是按距离取样:

  • GetSplineLength():总长度
  • GetLocationAtDistanceAlongSpline(...):某段距离处的位置
  • GetRotationAtDistanceAlongSpline(...):某段距离处的朝向
  • GetTransformAtDistanceAlongSpline(...):某段距离处的完整变换

这样就可以很容易做出“按速度沿路前进”的逻辑。

一个实用心智模型#

如果角色以速度 Speed 移动,那么每帧可以先累计距离:

  • Distance += Speed * DeltaTime

然后再从样条里读取当前位置和朝向。

这比自己在若干路径点之间切段插值更稳定,也更容易扩展到特效和相机。

典型配合方式#

1. 和移动系统配合#

  • 用样条决定目标位置
  • 再把位置交给角色移动、AI 或自定义插值逻辑

2. 和特效系统配合#

  • 按样条采样若干点生成 Niagara / Mesh
  • 做闪电链、引导线、地面轨迹等表现

3. 和 SplineMeshComponent 配合#

  • 用样条描述路径
  • SplineMeshComponent 把 Mesh 拉伸到每一段上
  • 常见于道路、绳索、管道

常见坑#

  • 【注意】局部空间和世界空间不要混淆,很多采样函数都有坐标空间参数。
  • 【注意】控制点运行时变更后,如果你手动增删点,通常要记得更新样条。
  • 【注意】“按参数 t 匀速”不等于“按路径长度匀速”,做移动时优先按距离采样。
  • 【技巧】如果路径只用于表现,不一定要每帧高频重建;很多情况可以先缓存采样结果。

关联到 GAS / 技能表现#

虽然样条不是 GAS 专属概念,但在技能系统里也很常见,例如:

  • 范围技能的指引轨迹
  • 闪电链或法术轨道
  • 位移技能的预览路径

把它当成“表现层路径工具”会比较容易定位它在项目中的职责。

样条曲线 spline
https://fuwari.vercel.app/wiki/unreal/gas/components/样条曲线spline/
Author
Qingswe
Published at
2025-04-18
License
CC BY-NC-SA 4.0