Unity 组件 Constraint系列(不用设置父子关系模拟设置父子关系的操作)

目录

目录

组件设置分析

Aim Constraints

 Parent Constraints

小结


概要

Constraint组件可以约束物体,链接本物体与目标物体的Transform,跟随目标物体的位置、旋转、缩放,实现父子物体一样的效果,却不用设置父子关系。而且一个物体可以同时关联多个目标物体,设置不同的权重

  • Aim:旋转受约束的游戏对象以面向链接的游戏对象。

  • Look At:将受约束的游戏对象旋转到链接的游戏对象(简化的目标约束)。

  • Parent:使用链接的游戏对象移动和旋转受约束的游戏对象。

  • Position:像链接的游戏对象一样移动受约束的游戏对象。

  • Rotation:旋转受约束的游戏对象,就像链接的游戏对象一样。

  • Scale:缩放受约束的游戏对象,如链接的游戏对象。

这是Unity官方给出的约束类型组件的解析

组件设置分析

所有Constraints共用的属性

Active:激活组件,并锁定编辑

Zero:重置组件,并锁定编辑

Is Active:是否激活组件

Weight:组件被影响的权重值

Lock:是否锁定编辑

Sources:要关联的目标对象,可以有多个,但是不同类型的组件所使用的权重分配是不一样的

Aim Constraints

在 Unity 中,瞄准约束是一个组件,可用于使对象或骨骼跟随并瞄准特定目标。它通常用于动画和绑定中,以创建逼真的瞄准或跟踪行为。

  • Object Rotation Up:选择此选项时,源变换的"上方"将与源变换自身的旋转方向对齐。这意味着源变换的本地坐标系的上方将在朝向过程中保持不变
  • Object Up:Object Up:选择此选项时,源变换的"上方"将与参考对象的上方对齐。参考对象是Aim Constraint组件所附加的对象的一个子对象,可以通过设置Reference Up属性来指定参考对象。源变换将在朝向过程中与参考对象的上方对齐。
  • Scene Up:选择此选项时,源变换的"上方"将与场景的全局上方对齐。全局上方是场景中的世界坐标系的上方。
  • World:选择此选项时,源变换的"上方"将与世界坐标系的上方对齐。这意味着源变换将在朝向过程中始终保持与世界坐标系的上方对齐,无论参考对象或场景中的旋转如何变化。
  • Rotation At Rest:目标对象权重为0时的旋转
  • Rotation Offset:自动旋转时的偏移量
  • Freeze Rotation Axes:Object Up:要冻结的旋转轴,冻结的轴向才能关联目标对象自动旋
  • Sources:要关联的目标对象,可以有多个,但是所使用的权重是相同的
  • Up Vector:用于定义源变换的"上方"向量。它确定了在源变换朝向目标时,源变换应该如何对齐其"上方"。通过选择不同的Up Vector选项,可以根据需求来确定源变换在朝向过程中的"上方"对齐方式。这可以影响到朝向的行为和结果。
  • Aim Vector:用于定义源变换的朝向向量。它确定了源变换将朝向目标时的方向。通过选择不同的Aim Vector选项或设置自定义向量,可以控制源变换朝向目标的方向。这在需要特定朝向行为的情况下非常有用,例如使物体朝向特定方向或指定相机朝向目标。
  • World UP Vector:用于定义在源变换朝向目标时,用于确定"上方"方向的自定义向量。它允许你手动指定源变换朝向时的上方方向,而不是使用默认的世界坐标系或参考对象的上方方向。World Up Vector属性是一个三维向量,通过设置其X、Y和Z分量来定义自定义的上方方向。你可以在属性面板中直接编辑这些分量,或者在脚本中通过代码设置它们。当你选择World Up Type属性为Custom时,World Up Vector属性才会生效。通过设置自定义的向量,你可以控制源变换朝向时的上方方向,从而实现更精确的控制和朝向效果。请注意,当选择了Custom作为World Up Type,并设置了自定义的World Up Vector时,它将覆盖其他选择(例如Object Up、Scene Up或World),并使用你指定的自定义向量作为上方方向。
  • World UP Object:用于指定一个参考对象,该对象的本地上方方向将被用作源变换朝向时的上方方向。当选择World Up Type属性为Object Up时,World Up Object属性会生效。你可以将一个对象指定为World Up Object,该对象的本地上方方向将被用作源变换朝向时的上方方向。要设置World Up Object属性,你可以在Unity编辑器中将一个对象拖拽到World Up Object属性字段中,或者通过代码设置该属性。在源变换朝向目标时,Aim Constraint会根据World Up Object的本地上方方向来对齐源变换的上方。这样可以实现与参考对象的上方保持一致的朝向效果。

 Parent Constraints

Unity 中的Parent Constraints用于根据对象的位置和旋转来控制对象的位置和旋转。它允许在对象之间创建分层关系并控制其转换。

设置Parent Constraints后,对父对象的位置和旋转所做的任何更改都将相应地影响子对象。子对象将根据约束设置保持其与父对象的相对位置和旋转。Parent Constraints对于在 Unity 中创建复杂的动画、角色绑定和控制对象层次结构非常有用。它们提供了一种建立父子关系和同步对象之间转换的便捷方法。

  • Position At Rest:目标对象权重为0时的位置
  • Rotation At Rest:目标对象权重为0时的旋转
  • Freeze Position Axes:要冻结的移动轴,冻结的轴向才能关联目标对象自动移动
  • Freeze Rotation Axes:要冻结的旋转轴,冻结的轴向才能关联目标对象自动旋转
  • Sources:要关联的目标对象,可以有多个,并设置不同的权重

其他的就不一一介绍了其大致意义上所实现的就是在两个物体没有父子关系的状态下,去实现存在父子物体的操作.

小结

Constraint:组件系列是用来制作一个游戏对象相对于另一个游戏对象一些操作,使很多操作可以不将物体设置为另一个物体的子物体来使用.

在Unity中,约束(Constraint)是一种用于控制对象之间关系和行为的组件。它们允许定义对象之间的约束条件,以实现各种效果和交互。

  1. 位置约束(Position Constraint):使一个对象跟随另一个对象的位置。通过将位置约束组件添加到跟随者对象,可以将其位置与目标对象的位置对齐或保持一定的偏移。

  2. 旋转约束(Rotation Constraint):使一个对象跟随另一个对象的旋转。通过将旋转约束组件添加到跟随者对象,可以使其旋转与目标对象的旋转对齐或保持一定的偏移。

  3. 缩放约束(Scale Constraint):使一个对象跟随另一个对象的缩放。通过将缩放约束组件添加到跟随者对象,可以使其缩放与目标对象的缩放对齐或保持一定的比例关系。

  4. 轴向约束(Aim Constraint):使一个对象朝向另一个对象。通过将轴向约束组件添加到朝向对象,可以指定朝向对象应该朝向的目标对象或方向。

  5. 距离约束(Distance Constraint):控制两个对象之间的距离。通过将距离约束组件添加到一个对象,可以指定该对象与目标对象之间的最小或最大距离。

  6. 物理约束(Physics Constraint):使用物理引擎控制对象之间的约束关系。例如,可以使用物理约束来模拟连接两个物体的绳子、关节或弹簧等。

通过使用这些约束组件,可以实现各种对象之间的复杂交互和关系。可以在Unity编辑器中手动添加和配置约束组件,也可以通过脚本在运行时动态添加和控制约束。约束是一种非常强大和灵活的工具,但也可能会增加复杂性。了解每种约束类型的属性和用法,并在使用时小心权衡其效果和性能影响。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值