# 变换约束

<callout>变换约束在Spine Essential版中不可用。</callout>

变换约束可将骨骼的世界旋转、平移、缩放和/或剪切(其[变换](/spine-bones#骨骼变换))复制到一个或多个其他骨骼。

变换约束对高级装配有许多巧妙的用途。最简单的方法是移动一个骨骼，然后让其他骨骼也移动。它可用于模拟有不同父对象的骨骼，例如摘下帽子、装备武器或[抛出物体](/img/spine-user-guide/tools/shear-example.gif)。可以通过仅约束变换的子集(例如，仅限制缩放或剪切)来创建有趣的效果。可以将一个骨骼自动放置在其他两个骨骼之间距离的任意百分比等等。

使用示例请参见变换约束[演示](/spine-demos#变换约束)、[示例项目](/spine-examples#变换约束)及[提示](/spine-tips#变换约束)。

# 设置

要创建变换约束，请选择任意数量的要约束的骨骼，然后单击`新建...` `变换约束`进入选择目标模式。通过单击现有骨骼或在空白区域单击以创建新骨骼来选择目标骨骼。目标骨骼不能是受约束骨骼的子级。

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

# 属性

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

## 骨骼

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

当多个骨骼受到约束时，它们将显示在选框中。骨骼的顺序对于变换约束并不重要。

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

单击铅笔图标可以选择不同的骨骼。这将清除所有受约束的骨骼，并允许选择新骨骼。

## 本地

选中后，将修改受约束骨骼的本地变换以匹配目标骨骼。

取消选中后，将改为修改世界变换。

## 相对

选中后，通过添加目标骨骼的变换来修改受约束骨骼的变换。这意味着在应用变换约束之前，结果变换相对于受约束骨骼的变换。

取消选中后，将修改受约束骨骼的变换以匹配目标骨骼的变换。这意味着当混合值为100时，应用变换约束之前受约束骨骼的变换不会影响结果变换。

取消选中`本地`而选中`相对`时，使用负缩放翻转目标骨骼可能会产生不需要的结果。例如，当缩放导致目标骨骼指向相反方向时，其世界旋转与缩放前有180度的不同。使用`相对`时，这会导致受约束的骨骼旋转180度。

## 目标

这将显示目标骨骼。单击该骨骼将选中它。

单击铅笔图标可以选择不同的骨骼。

## 偏移

偏移滑块值将被添加到目标骨骼的变换值，从而允许在仍然基于目标骨骼的情况下自定义结果变换。这是为了方便起见，因此不需要额外的骨骼即可达到相同的效果。

例如，旋转偏移为90度时，受约束骨骼的旋转将设置为目标骨骼旋转加90度。

### 匹配

`匹配`按钮设置偏移滑块，使其与第一个受约束骨骼的当前变换相匹配。可以方便地将混合设置为0，根据需要操作第一个受约束骨骼的变换，然后单击`匹配`将滑块设置为该偏移。

与手动调整每个偏移滑块相比，使用标准工具通常更容易，可根据需要操作第一个受约束骨骼的变换，然后单击`匹配`将滑块设置为该偏移。

## 混合

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

选中`链接滑块`时，所有混合滑块将一起移动。

# 视频

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

[youtube:Cr3aQ_8R-7k&list=PLwGl7Ikd_6GRFo7d0uRu_fN2RIlvkxW7b]

[下一节: 事件](/spine-events)
[上一节: 路径约束](/spine-path-constraints)
[Spine用户指南: 目录]