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 专属概念,但在技能系统里也很常见,例如:
- 范围技能的指引轨迹
- 闪电链或法术轨道
- 位移技能的预览路径
把它当成“表现层路径工具”会比较容易定位它在项目中的职责。