游戏开发小Y
Unity Hololens2开发|(九)MRTK3空间操作 ConstraintManager(约束)
关注作者
前往小程序,Get
更优
阅读体验!
立即前往
腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
首页
学习
活动
专区
工具
TVP
最新优惠活动
返回腾讯云官网
游戏开发小Y
首页
学习
活动
专区
工具
TVP
最新优惠活动
返回腾讯云官网
社区首页
>
专栏
>
Unity Hololens2开发|(九)MRTK3空间操作 ConstraintManager(约束)
Unity Hololens2开发|(九)MRTK3空间操作 ConstraintManager(约束)
游戏开发小Y
关注
发布于 2024-01-18 19:10:58
233
0
发布于 2024-01-18 19:10:58
举报
文章被收录于专栏:
Unity开发系列专栏
1.前言
使用
ConstraintManager
,可以将一组约束组件应用于转换。 默认情况下,约束管理器会自动收集所有附加的约束组件,并将它们应用到目标对象。 但是,用户也可以选择手动配置应用的约束列表,只允许使用附加约束的子集.
目前,以下 MRTK UX 元素支持约束:
(BoundsControl)边界控制
(ObjectManipulator )对象操控器
约束管理器可在两种模式下运行:
自动约束选择
手动约束选择
2.约束选择
2.1 自动约束选择
默认的“Auto”模式将列出所有附加的约束组件。 可以使用“Go to component”按钮直接跳转到检查器中的组件,也可以从下拉列表中添加新约束。
2.2 手动约束选择
如果将束管理器设置为手动模式,则仅处理约束列表中链接的约束并将其应用于转换。 首次启用手动模式时,管理器将使用所有当前附加的约束自动填充列表。
3.执行顺序
每个约束的执行顺序可以在约束本身的“执行顺序”选项中定义。 该顺序将反映在约束管理器中显示的列表中。 当某些约束以不同的顺序组合时,它们的行为会有所不同,因此请记住每个约束的优先级,并相应地调整它们的顺序。
4.转换约束
可以使用约束以某种方式限制操作。 例如,某些应用程序可能需要旋转,同时要求对象保持垂直。 在这种情况下,可以向对象添加
RotationAxisConstraint
,并用于将旋转限制为 y 轴旋转。 MRTK 提供了许多约束,所有这些约束如下所述。
也可以定义新约束,并使用它们创建某些应用程序可能需要的唯一操作行为。 为此,可以创建一个继承自
TransformConstraint
的脚本,并实现抽象的
ConstraintType
属性和抽象的
ApplyConstraint
方法。 新约束应显示在下拉列表中,并且应在添加到对象时自动在约束管理器中注册。
MRTK 提供的所有约束共享以下属性:
Hand Type 指定约束是用于单手操作、双手操作还是同时用于这两种操作。 由于此属性是一个标志,因此可以同时选择这两个选项:
(One Handed)单手:如果选择,约束将在单手操作期间使用。
(Two Handed)双手操作:如果选择,约束将在双手操作期间使用。
手ProximityType 指定约束是用于近操作、远操作还是同时用于这两种操作。 由于此属性是一个标志,因此可以同时选择这两个选项:
(Near)近:如果选择,约束将在近操作期间使用。
(Far)远:如果选择,约束将在远操作期间使用。
5.约束类型
5.1 FaceUserConstraint
此约束限制对象的旋转,以使其始终面向用户。 “Face Away”选项控制是使用正 Z 轴还是负 Z 轴。
5.2 FixedDistanceConstraint
此约束固定了操作开始时被操作对象与另一个对象转换之间的距离。 这适用于诸如固定被操作对象与头部转换之间的距离等行为。
Constraint Transform
字段默认为相机转换,是操作对象将具有固定距离的另一个转换。
5.3 MaintainApparentSizeConstraint
当此约束被附加到对象时,无论对象与用户有多远,它都将保持与用户相同的表面大小(即它将占据用户视野的相同比例)。 这可用于确保在操作时盖板或面板仍然可读。
5.4 MoveAxisConstraint
此约束可用于固定被操作对象沿哪个轴移动。 这可用于在平面表面或沿直线操作对象。
Constraion on Movement
字段指定要阻止移动的轴。 默认情况下,这些轴是全局轴而不是局部轴,但可以在下方进行更改。 由于此属性是一个标志,因此可以选择任意数目的选项。
5.5 MinMaxScaleConstraint
此约束限制对象的缩放,这有助于防止用户将对象缩放到无法使用的大小。 它适用于基于句柄的缩放(使用
BoundsControl
)和通过双手操作的直接缩放(使用
ObjectManipulator
)。
Relative to Initial State
选项定义特定的最小和最大缩放值是否为绝对值,或者它们是否与对象的初始缩放比例相乘。
5.6 RotationAxisConstraint
此约束可用于固定被操作对象可沿哪个轴旋转。 这可用于使被操作对象保持垂直,但仍允许围绕 y 轴旋转,例如。
Constraint On Rotation
字段指定要阻止旋转的轴。 默认情况下,这些轴是全局轴而不是局部轴,但可以在下方进行更改。 由于此属性是一个标志,因此可以选择任意数目的选项。
本文参与
腾讯云自媒体同步曝光计划
,分享自作者个人站点/博客。
原始发表:2023-12-26,如有侵权请联系
cloudcommunity@tencent.com
删除
前往查看
配置
unity
对象
脚本
开发
本文分享自
作者个人站点/博客
前往查看
如有侵权,请联系
cloudcommunity@tencent.com
删除。
本文参与
腾讯云自媒体同步曝光计划
,欢迎热爱写作的你一起参与!
配置
unity
对象
脚本
开发
评论
登录
后参与评论
0 条评论
热度
最新
推荐阅读
LV.
文章
0
获赞
0
目录
1.前言
2.约束选择
2.1 自动约束选择
2.2 手动约束选择
3.执行顺序
4.转换约束
5.约束类型
5.1 FaceUserConstraint
5.2 FixedDistanceConstraint
5.3 MaintainApparentSizeConstraint
5.4 MoveAxisConstraint
5.5 MinMaxScaleConstraint
5.6 RotationAxisConstraint
领券
问题归档
专栏文章
快讯文章归档
关键词归档
开发者手册归档
开发者手册 Section 归档
0
0
0
推荐