# 路径约束

<callout>路径约束在Spine Essential版中不可用。</callout>

路径约束使用[路径](/spine-paths)调整[骨骼变换](/spine-bones#骨骼变换)。骨骼可以沿路径平移，并将其旋转调整为指向路径。

![](/img/spine-user-guide/path-constraint/pathconstraint.png)

路径约束可以替换平移关键帧，从而可以通过使用路径更轻松地定义移动。许多其他用途包括将多个骨骼约束到一条路径，然后通过操纵路径来控制骨骼，而非单独调整每个骨骼。例如，骨骼可以沿路径均匀分布，也可以放大，使它们看起来像是沿着路径生长。

有关使用示例，请参阅路径约束[演示](/spine-demos#Path-constraints)、[示例项目](/spine-examples#Path-Constraints)和[提示](/spine-tips#Path-Constraints)。

# 设置

要创建路径约束，请选择要约束的骨骼，然后单击层级树属性中的`新建...` `路径约束`。接下来，选择层级树中的一个插槽或层级树或视口中的现有路径。

![](/img/spine-user-guide/path-constraint/setup.png)

路径约束实际上并不以路径为目标，而是以插槽为目标。路径约束将使用该插槽的可见路径(如果有的话)。这提供了额外的灵活性，因为单个路径约束可以与多个路径一起使用。

# 属性

![](/img/spine-user-guide/path-constraint/properties.png)

## 骨骼

这将显示受约束的骨骼。当一个骨骼受到约束时，单击骨骼将选中它。

当多个骨骼受到约束时，它们将显示在选择框中。可以通过打开选择框并上下拖动骨骼来修改骨骼沿路径显示的顺序。

打开选择框并单击一个骨骼将选择该骨骼。在不打开选择框的情况下右键单击一个骨骼名称将选择该骨骼。

单击铅笔图标可以选择不同的骨骼。这将清除所有受约束的骨骼，并允许选择新骨骼。选择骨骼的顺序决定了它们将沿路径显示的顺序。

## 目标

此属性显示目标插槽。如果插槽有可见的路径，还会显示该路径。单击可选择插槽或路径。

通过单击铅笔图标，然后选择插槽或路径，可以选择不同的插槽。

## 间距

<callout>`长度`或`比例`在每个骨骼之间需要不同间距时非常有用。</callout>

间距控制第一个骨骼之后的骨骼如何沿路径放置。

* `长度` 使用前一个骨骼的长度放置每个骨骼。间隔值将与每个骨骼的长度相加。
* `固定` 使用固定距离等间距放置骨骼。
* `百分比` 使用总路径长度的特定百分比等间距放置骨骼。
* `比例` 在间隔值为100时放置间隔的骨骼以占据整个路径。每个骨骼的长度决定了用于间距的总路径长度的比例。

间距滑块可调整间隔值。间隔值可以[设置关键帧](/spine-keys#路径约束)。

## 位置

位置控制沿路径放置骨骼的位置。

* `固定` 将骨骼沿路径固定距离放置。
* `百分比` 沿路径放置骨骼的距离等于路径总长度的特定百分比。

位置滑块可调整位置值。位置值可以[设置关键帧](/spine-keys#路径约束)。

如果路径不是[封闭](/spine-paths#封闭)的，则当位置在路径起点之前(负)或超过路径终点时，将使用路径起点或终点指向的方向上的直线确定位置。选择路径时，这将显示为虚线。

### 位置控制柄

<callout>如果按住`ctrl`(Mac为`cmd`)，位置控制柄不会被选中。这有助于选择位置控制柄下的结点或控制柄。</callout>

选择路径后，位置控制柄将显示在视口中的路径上。

![](/img/spine-user-guide/path-constraint/position.jpg)

拖动位置控制柄会更改位置值，比使用位置滑块更方便。

## 旋转偏移

旋转偏移将添加到由[旋转混合](#旋转混合)计算的旋转。这样做是为了方便起见，使骨骼可以指向不同的方向，而无需使用额外的骨骼来执行此操作。

![](/img/spine-user-guide/path-constraint/offset.jpg)

## 旋转混合

旋转混合控制骨骼如何旋转、平移和缩放以匹配路径。

* `切线` 旋转骨骼，使其指向骨骼所在位置的路径方向。这意味着当路径弯曲时，骨骼末梢很可能不在路径上，骨骼也不会指向下一个骨骼。<br>![](/img/spine-user-guide/path-constraint/tangent.jpg)
* `链` 首先将骨骼移动到前一骨骼的末梢，然后旋转骨骼，使其指向路径上的下一个位置，该位置由[间距](#间距)确定。当[旋转偏移](#旋转偏移)不是零时，不应用平移。当路径急剧弯曲时，前一个骨骼末梢可能不在路径上(参见下图)。当骨骼代表坚硬的东西时，`链`很有用，比如坦克履带。<br>![](/img/spine-user-guide/path-constraint/chain.jpg)
* `链缩放` 首先旋转骨骼，使其指向路径上的下一个位置(由[间距](#间距)确定)，然后缩放骨骼，使末梢位于该位置。这可确保所有骨骼位置和末梢都在路径上。当骨骼代表一些柔软的东西(例如绳子)时`链缩放`非常有用。<br>![](/img/spine-user-guide/path-constraint/chain-scale.jpg) 当使用`链缩放`时，所有骨骼应该具有相同的父级。否则，将显示警告图标，并且路径约束应用的比例可能不正确。

旋转混合滑块可调整旋转混合，请参见[约束混合](/spine-constraints#混合)。旋转混合可以[设置关键帧](/spine-keys#路径约束)。

当旋转混合大于0且小于100时，移动目标骨骼可能会导致旋转突然使用另一个方向。这是因为骨骼旋转和约束旋转之间的插值使用最短的旋转方向。

通常，旋转混合仅短暂地用于在0和100之间的过渡。

## 平移混合

平移混合控制约束对骨骼平移的影响程度，请参见[约束混合](/spine-constraints#混合)。平移混合可以[设置关键帧](/spine-keys#路径约束)。

选中`链接滑块`时，旋转和平移混合滑块将一起移动。

# 颜色

位置控制柄和路径约束的层级树图标颜色使用第一个受约束骨骼的颜色。

# 视频

[Bilibili](https://www.bilibili.com/video/BV1Rt4y1r7Xm/)
<iframe src="//player.bilibili.com/player.html?bvid=BV1Rt4y1r7Xm&autoplay=0" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"> </iframe>!!

[youtube:ToJ6oGA73J4&list=PLwGl7Ikd_6GRFo7d0uRu_fN2RIlvkxW7b]

[下一节: 变换约束](/spine-transform-constraints)
[上一节: IK约束](/spine-ik-constraints)
[Spine用户指南: 目录]