c0d3n4m 发表于 2023-1-2 21:41

Unity基础(十五)约束系统 (AimConstraint)

约束

<hr>
约束组件将游戏对象的位置、旋转或缩放与另一个游戏对象关联。受约束的游戏对象像关联到的游戏对象一样移动、旋转或缩放。

Unity 支持以下类型的约束组件:

Aim:旋转受约束的游戏对象以朝向关联的游戏对象。<< (这节课所讲解的组件)

Look At:将受约束的游戏对象旋转到关联的游戏对象(简化的 Aim Constraint)。

Parent:使受约束的游戏对象跟随关联的游戏对象移动和旋转。

Position:像关联的游戏对象一样移动受约束的游戏对象。

Rotation:像关联的游戏对象一样旋转受约束的游戏对象。

Scale:像关联的游戏对象一样缩放受约束的游戏对象。
目标约束 AimConstraint

<hr>
AimConstraint 相对于其他约束参数角度,我们接下来对不常见的属性做一下讲解

Aim Vector:目标矢量,就是指定物体要被约定的朝向,例如我们这里设置 0,0,1,就是 Z 轴朝向目标物,如果设置成 0,1,0 那就是 Y 轴朝向目标物相对于朝向约束只约束 Z 轴朝向,目标约束可以明确制定约束哪个轴向

此时对象的Z轴会对准目标物体的中心点
UpVector : 向上矢量,就是指定哪个轴向代表物体的向上朝向,例如我们这里设置为 0,1,0,就是将物体的 Y 轴设定为向上轴向
WorldUpType:指定 UpVector 的配置方式,分为多种 SceneUp,ObjectUp,ObjectRotation up,Vector,None



SceneUp:使用场景的向上轴为 UpVector 参考,场景的向上轴为 Y 轴,所以物体的向上轴会向上对齐。

ObjectUp:使用本物体到指定物体的位置之间的朝向为约束向上轴朝向,选择后 WorldUpObject 属性会被激活。

ObjectRotationUp:使用指定物体的指定轴向作为向上的轴约束,选择后 WorldUpObject 和 WorldUpVector 都会被激活。其中 WorldUpVector 就是配置使用 WorldUpObject 的哪个轴向来进行约束

Vector:使用世界控制指定的朝向作为约束朝向,选择后,WorldUpVector 会被激活,可以理解为 SceneUp 就等同于这个模式下的 0 ,1, 0

None : 为空没有指向类型
Constraint Settings



[*]
锁定 (Lock) : 启用此设置可让约束旋转游戏对象。取消选中此属性可编辑此游戏对象的旋转。还可以编辑 Rotation At Rest 和 Rotation Offset 属性。
如果选中了 Is Active,则约束将在您旋转游戏对象或其源游戏对象时更新 Rotation At Rest 或 Rotation Offset 属性。在对更改满意后,选中 Lock 以便让约束控制此游戏对象。此属性在运行模式 (Play Mode) 下无效。
Rotation At Rest : 在 Weight 为 0 时或者未选中对应的 Freeze Rotation Axes 时要使用的 X、Y 和 Z 值。要编辑这些字段,请取消选中 Lock。

Rotation Offset    : 由约束计算的相对于旋转的 X、Y 和 Z 偏移量。要编辑这些字段,请取消选中 Lock。

Freeze Rotation Axes :选中 X、Y 或 Z 可允许约束控制对应的轴。取消选中某个轴可以让约束停止控制该轴。这样就可以对未冻结的轴进行编辑、动画化或编程。
[*]
Sources: 约束此游戏对象的游戏对象的列表。
Unity 按照源游戏对象在此列表中出现的顺序来对源游戏对象求值。此顺序会影响此约束如何旋转受约束的游戏对象。要获得所需的结果,请拖放此列表中的项。
每个源的权重为 0 到 1。
页: [1]
查看完整版本: Unity基础(十五)约束系统 (AimConstraint)