PathCreator使用教程:用PathCreator实现自定义轨迹动画与路径控制
【Unity笔记】PathCreator 使用教程:用 PathCreator 实现自定义轨迹动画与路径控制
引言
PathCreator 是 Unity Asset Store 上由 SebLague 开发的免费工具包(GitHub: SebLague/Path-Creator),专为创建和编辑 Bézier 曲线路径设计。它支持在编辑器中可视化绘制路径、实时预览和运行时动画控制,适用于自定义轨迹动画(如角色巡逻、相机轨道、粒子轨迹)和路径引导(如道路生成、AI 导航)。相比 Unity 内置的 LineRenderer 或 AnimationCurve,PathCreator 提供更灵活的编辑工具(如手柄拖拽)和扩展性(如 Playmaker 集成)。
核心功能:
- 路径编辑:Bézier 曲线,支持线性/二次/三次样条。
- 动画控制:BeziersPathContainer 和 PathFollower 组件实现物体沿路径移动。
- 自定义轨迹:支持速度曲线、旋转控制和事件触发。
- 性能:运行时高效,编辑器实时反馈。
- 适用版本:Unity 2018.4+(推荐 2022.3 LTS),免费下载(Asset Store ID: 171693)。
本教程基于 PathCreator 2.0+(2023 年更新),结合 C# 脚本实现轨迹动画。下载后导入项目,教程分步骤讲解。时间复杂度 O(n),n 为路径点数(推荐 < 1000 以保持性能)。
安装与初始设置
- 下载插件:
- Asset Store 搜索 “Path Creator” > Import(免费)。
- 或 GitHub 下载(https://github.com/SebLague/Path-Creator),导入 .unitypackage。
- 场景设置:
- 创建空 GameObject > Add Component > Path Creator(添加路径编辑器)。
- 在 Hierarchy 选中路径对象,Scene View 中出现路径绘制工具(点击添加点,拖拽手柄调整曲线)。
- 基本路径创建:
- Scene View 工具栏 > Path Creator Tools(或右键 > Path Creator > Edit Path)。
- 添加点:点击场景添加控制点。
- 编辑:拖拽点/手柄调整 Bézier 曲线;支持闭合路径(Loop)。
自定义轨迹动画实现
PathCreator 的动画核心是 PathFollower 组件:将物体附加到路径上,支持速度控制和旋转跟随。
步骤1: 创建路径并配置
- 添加 PathCreator 组件的对象作为路径容器(BeziersPathContainer)。
- 编辑路径:设置 Global Path Distance(路径长度单位)。
步骤2: 附加 PathFollower 实现动画
using UnityEngine;
using PathCreation; // PathCreator 命名空间
public class TrajectoryAnimator : MonoBehaviour
{
[Header("路径设置")]
public PathCreator pathCreator; // 拖拽路径对象
[Header("动画控制")]
public float speed = 5f; // 移动速度
public bool orientToPath = true; // 面向路径方向
public bool loop = true; // 循环播放
public AnimationCurve speedCurve = AnimationCurve.Linear(0f, 0f, 1f, 1f); // 速度曲线
private PathFollower pathFollower;
void Start()
{
pathFollower = gameObject.AddComponent<PathFollower>();
pathFollower.pathCreator = pathCreator;
pathFollower.speed = speed;
pathFollower.orientToPath = orientToPath;
pathFollower.loop = loop;
// 应用速度曲线(自定义)
StartCoroutine(AnimateWithCurve());
}
IEnumerator AnimateWithCurve()
{
float distanceTravelled = 0f;
float pathLength = pathCreator.path.length;
while (true)
{
distanceTravelled += speed * Time.deltaTime;
if (loop) distanceTravelled %= pathLength;
float normalizedDistance = distanceTravelled / pathLength;
float curveSpeed = speedCurve.Evaluate(normalizedDistance);
pathFollower.speed = curveSpeed;
pathFollower.distanceTravelled = distanceTravelled;
yield return null;
}
}
// 公共方法:动态控制
public void SetSpeed(float newSpeed)
{
speed = newSpeed;
pathFollower.speed = newSpeed;
}
public void JumpToPercentage(float percentage)
{
pathFollower.distanceTravelled = percentage * pathCreator.path.length;
}
}
- 解释:
- PathFollower:内置组件,自动沿路径移动物体。
- speedCurve:AnimationCurve 控制变速(如加速/减速轨迹)。
- orientToPath:物体旋转跟随路径切线,实现平滑转向。
- JumpToPercentage:支持跳跃到路径特定点(如事件触发)。
步骤3: 路径控制高级应用
- 事件触发:使用 OnPathWaypointReached 回调。
public class PathEventTrigger : MonoBehaviour
{
public UnityEngine.Events.UnityEvent onWaypointReached;
void OnEnable()
{
PathFollower follower = GetComponent<PathFollower>();
follower.waypointReached += OnWaypoint;
}
void OnWaypoint(int waypointIndex)
{
onWaypointReached?.Invoke(); // 到达点时触发事件
}
}
- 相机轨道动画:附加到 Camera,实现自定义镜头路径。
public class CameraPathController : MonoBehaviour
{
public PathCreator cameraPath;
void Start()
{
PathFollower follower = gameObject.AddComponent<PathFollower>();
follower.pathCreator = cameraPath;
follower.speed = 2f;
follower.orientToPath = false; // 相机不旋转跟随
}
}
路径控制技巧
- 编辑器工具:
- Scene View:启用 Path Creator Tools,添加/删除点,调整手柄(Tangent Mode: Free/Broken/Aligned)。
- 预览:选中路径对象,按 Play 观察动画。
- 运行时控制:
- 修改路径点:pathCreator.beziers[0].ControlPointPosition = newPos;
- 动态添加点:pathCreator.beziers.Add(new BezierPathSegment(…))。
- 性能优化:
- 减少路径点数(< 200)。
- 使用 pathCreator.path.GetPointAtDistance(distance) 手动采样,避免 PathFollower 开销。
- 扩展:
- 集成 DOTween:平滑插值路径点。
- 与 NavMesh 结合:AI 路径引导。
常见问题解决
问题 | 原因 | 解决方案 |
---|---|---|
路径不平滑 | 手柄未对齐 | 设置 Tangent Mode 为 Aligned |
动画卡顿 | 点数过多 | 简化曲线,使用 Linear Interpolation |
物体翻转 | orientToPath 冲突 | 调整 Up Vector 或使用 Look Rotation |
编辑器预览失效 | 路径未选中 | 选中 PathCreator 对象,按 Scene View 工具 |
资源链接
- 官方 GitHub:https://github.com/SebLague/Path-Creator (源码与示例)。
- YouTube 教程:https://www.youtube.com/watch?v=saAQNRSYU9k (Path Creator 介绍)。
- Asset Store:https://assetstore.unity.com/packages/tools/utilities/path-creator-171693 (免费下载)。
- 扩展工具:结合 Dreamteck Splines(付费)实现更复杂路径。
PathCreator 是高效的路径动画解决方案,适合自定义轨迹需求。如果需要完整项目示例或与动画系统的集成,请提供更多细节!