您的位置:首页 > 房产 > 建筑 > 装饰公司加盟连锁排名有哪些_富士康一般都是干什么活_娃哈哈软文推广_链交换反应

装饰公司加盟连锁排名有哪些_富士康一般都是干什么活_娃哈哈软文推广_链交换反应

2025/3/1 4:28:12 来源:https://blog.csdn.net/qq_44501691/article/details/145895775  浏览:    关键词:装饰公司加盟连锁排名有哪些_富士康一般都是干什么活_娃哈哈软文推广_链交换反应
装饰公司加盟连锁排名有哪些_富士康一般都是干什么活_娃哈哈软文推广_链交换反应

目录

一、插件介绍

二、主要组件

XR Interaction Manager

XR Controller

XR Interactor

XR Direct Interactor

XR Ray Interactor

XR Socket Interactor

XR Gaze Interactor

XR Interaction Group

XR Interactable

XR Simple Interactable

三、XR Grab Interactable

1、组件介绍

2、核心功能与特点

物理驱动的抓取

投掷与惯性模拟

多交互器协同

抓取条件过滤

事件与反馈

3、组件配置详解

交互属性表

凝视交互属性表

运动控制属性表

跟踪参数表

抛出与附加属性表

高级配置表

4、事件系统与脚本交互

1. 抓取时播放音效

2. 抓取后锁定物体旋转

5、与其他组件的协作

与 Rigidbody 的集成

与 XR Interaction Group 的协同

与 XR Socket Interactor 的联动

6、实际应用场景

场景1:物理抓取与投掷

场景2:双手协同操作

场景3:可破坏物体

7、高级用法与优化

自定义抓取条件

动态调整抓取参数

抓取动画与特效

8、常见问题与解决

问题:抓取后物体抖动

问题:投掷力度不足

问题:多抓取时物体偏移


一、插件介绍

Unity XR-XR Interaction Toolkit开发使用方法(一)-CSDN博客

Unity XR-XR Interaction Toolkit开发使用方法(二)Hisense XR-V3 Pro SDK接入-CSDN博客


二、主要组件

XR Interaction Manager

Unity XR-XR Interaction Toolkit开发使用方法(三)组件介绍(XR Interaction Manager)-CSDN博客

XR Controller

Unity XR-XR Interaction Toolkit开发使用方法(四)组件介绍(XR Controller)-CSDN博客

XR Interactor

Unity XR-XR Interaction Toolkit开发使用方法(五)组件介绍(XR Interactor)-CSDN博客

XR Direct Interactor

Unity XR-XR Interaction Toolkit开发使用方法(六)组件配置(XR Direct Interactor)-CSDN博客

XR Ray Interactor

Unity XR-XR Interaction Toolkit开发使用方法(七)组件配置(XR Ray Interactor)-CSDN博客

XR Socket Interactor

Unity XR-XR Interaction Toolkit开发使用方法(八)组件介绍(XR Socket Interactor)-CSDN博客

XR Gaze Interactor

Unity XR-XR Interaction Toolkit开发使用方法(九)组件介绍(XR Gaze Interactor)-CSDN博客

XR Interaction Group

Unity XR-XR Interaction Toolkit开发使用方法(十)组件介绍(XR Interaction Group)-CSDN博客

XR Interactable

Unity XR-XR Interaction Toolkit开发使用方法(十一)组件介绍(XR Interactable)-CSDN博客

XR Simple Interactable

Unity XR-XR Interaction Toolkit开发使用方法(十二)组件介绍(XR Simple Interactable)-CSDN博客


三、XR Grab Interactable

1、组件介绍

Unity XR Grab Interactable 是 XR Interaction Toolkit 中用于实现 物理抓取与投掷交互 的核心组件,专为需要模拟真实抓取、投掷、旋转等行为的场景设计(如抓取杯子、抛掷飞盘、双手操作物体)。它在 XR Interactable 的基础上扩展了物理交互能力,是构建沉浸式抓取体验的核心工具。

可交互组件,提供基础抓取功能。当该组件被交互器选中(抓取)时,将跟随其移动,并在释放时继承其速度。


2、核心功能与特点

物理驱动的抓取

  1. 支持 运动学抓取(Kinematic) 和 物理力抓取(Velocity Tracking) 两种模式,适应不同物理模拟需求。
  2. 抓取时自动将物体绑定到交互器的 Attach Transform,确保位置对齐。

投掷与惯性模拟

  1. 释放物体时,根据交互器的运动速度施加线速度和角速度,模拟真实投掷效果。
  2. 可配置速度缩放比例(Velocity Scale 和 Angular Velocity Scale)。

多交互器协同

  1. 支持 双手抓取(需启用 Allow Multiple Selection),允许多个交互器共同控制同一物体(如双手调整物体旋转)。

抓取条件过滤

  1. 通过 标签(Tag)脚本接口(IXRSelectFilter) 或 自定义逻辑 限制可抓取的交互器类型。

事件与反馈

  1. 提供 OnSelectEnteredOnSelectExited 等事件,支持抓取/释放时的音效、粒子特效等反馈。

3、组件配置详解

交互属性表

属性描述
交互管理器 (Interaction Manager)此可交互对象关联的 XRInteractionManager(将与其通信)
交互层遮罩 (Interaction Layer Mask)允许与交互层遮罩重叠的交互器进行交互
碰撞体 (Colliders)用于与此可交互对象交互的碰撞体(若为空,则使用所有子碰撞体)
距离计算模式 (Distance Calculation Mode)定义如何计算与交互器的距离(从最快到最精确):
- ​变换位置 (Transform Position):使用可交互对象的变换位置计算距离(性能最佳,但精度可能较低)
- ​碰撞体位置 (Collider Position):使用碰撞体列表中最短距离点(中等性能,中等精度)
- ​碰撞体体积 (Collider Volume):计算碰撞体表面或内部的最短距离(性能消耗最高,精度最高)
自定义光标 (Custom Reticle)有效时显示在线条末端的指示符
选择模式 (Select Mode)控制可交互对象的选择策略:
- ​单选 (Single):同一时间仅允许一个交互器选择
- ​多选 (Multiple):允许多个交互器同时选择
聚焦模式 (Focus Mode)定义可交互对象的聚焦策略:
- ​无 (None):禁用聚焦状态
- ​单组 (Single):允许单个交互组的交互器聚焦
- ​多组 (Multiple):允许多个交互组的交互器聚焦

凝视交互属性表

属性描述
允许凝视交互 (Allow Gaze Interaction)启用来自 XRGazeInteractor 的基础交互事件
允许凝视选择 (Allow Gaze Select)允许通过凝视交互器进行选择
覆盖凝视选择时间 (Override Gaze Time To Select)允许覆盖 XRGazeInteractor 的悬停选择时间
凝视选择时间 (Gaze Time To Select)XRGazeInteractor 悬停触发选择所需的秒数
覆盖自动取消选择时间 (Override Time To Auto Deselect)允许覆盖 XRGazeInteractor 的自动取消选择时间
自动取消选择时间 (Time To Auto Deselect)被凝视选择后自动取消选择的秒数
允许凝视辅助 (Allow Gaze Assistance)启用后,XRGazeInteractor 会生成 XRInteractableSnapVolume 辅助射线交互器吸附

运动控制属性表

属性描述
运动类型 (Movement Type)定义对象被选中时的移动方式:
- ​速度跟踪 (Velocity Tracking):通过设置刚体速度移动(允许穿透无刚体的碰撞体,但移动延迟较高)
- ​运动学 (Kinematic):通过物理更新移动刚体(保持物理同步,允许碰撞)
- ​瞬时 (Instantaneous):直接更新变换位置(延迟最低,但可能穿透碰撞体)
保留父级变换 (Retain Transform Parent)释放对象时恢复其原始父级

跟踪参数表

属性描述
跟踪位置/旋转/缩放 (Track Position/Rotation/Scale)启用后跟随交互器的位置/旋转/缩放
平滑参数 (Smooth Position/Rotation/Scale)启用平滑过渡
平滑强度 (Smooth Amount)平滑过渡的强度系数(值越大跟随越紧密)
收紧参数 (Tighten)限制平滑过渡的最大偏移(0为无限制,1为完全收紧)
速度阻尼/缩放 (Velocity Damping/Scale)速度跟踪模式下对线速度的阻尼和缩放系数
角速度阻尼/缩放 (Angular Velocity Damping/Scale)速度跟踪模式下对角速度的阻尼和缩放系数

抛出与附加属性表

属性描述
分离时抛出 (Throw On Detach)释放时继承交互器的速度
抛出平滑参数 (Throw Smoothing)速度计算的平滑时长和曲线
抛出速度缩放 (Throw Velocity Scale)线速度和角速度的缩放系数
强制重力 (Force Gravity On Detach)释放时强制启用重力
附加变换 (Attach Transform)交互时的附着点(默认使用对象自身原点)
动态附加 (Use Dynamic Attach)根据交互器姿态动态计算附着点
匹配位置/旋转 (Match Position/Rotation)初始化抓取时对齐交互器的附着点
吸附到碰撞体 (Snap To Collider Volume)保持动态附着点在碰撞体表面/内部
附加缓动时间 (Attach Ease In Time)抓取时的缓动时间(0表示立即附加)

高级配置表

属性描述
抓取变换器 (Grab Transformers)单/多交互器抓取时的变换器配置
交互过滤器 (Interactable Filter)为交互器分配悬停/选择/交互强度过滤器
交互事件 (Interactable Events)可交互对象的事件回调配置

4、事件系统与脚本交互

XR Grab Interactable 的事件可通过 Unity Event 或 脚本动态监听 实现。以下是典型用法:

1. 抓取时播放音效

using UnityEngine;
using UnityEngine.XR.Interaction.Toolkit;public class GrabFeedback : MonoBehaviour
{public AudioClip grabSound;private XRGrabInteractable grabInteractable;void Start(){grabInteractable = GetComponent<XRGrabInteractable>();grabInteractable.onSelectEntered.AddListener(PlayGrabSound);}private void PlayGrabSound(XRBaseInteractor interactor){AudioSource.PlayClipAtPoint(grabSound, transform.position);}
}

2. 抓取后锁定物体旋转

grabInteractable.onSelectEntered.AddListener(interactor => 
{Rigidbody rb = grabInteractable.GetComponent<Rigidbody>();rb.constraints = RigidbodyConstraints.FreezeRotation;
});

5、与其他组件的协作

与 Rigidbody 的集成

  1. 若使用 Velocity Tracking 模式,物体必须附加 Rigidbody 组件。
  2. 调整 Rigidbody 的 MassDrag 参数优化运动效果。

与 XR Interaction Group 的协同

  1. 使用 XR Interaction Group 管理多个抓取交互器的优先级(如双手抓取时动态分配控制权重)。

与 XR Socket Interactor 的联动

  1. 物体被抓取后,可插入 XR Socket Interactor 插槽(如钥匙归位)。

6、实际应用场景

场景1:物理抓取与投掷

  1. 为物体添加 XRGrabInteractable 和 Rigidbody
  2. 设置 Movement Type 为 Velocity Tracking,调整 Velocity Scale 为 1.5(增强投掷力度)。
  3. 监听 OnSelectExited 事件,根据手柄速度赋予物体动能。

场景2:双手协同操作

  1. 启用 Allow Multiple Selection
  2. 双手抓取物体时,计算两交互器的平均位置和旋转,动态更新物体姿态:
void Update()
{if (grabInteractable.interactorsSelecting.Count == 2){Vector3 avgPos = (interactor1.attachTransform.position + interactor2.attachTransform.position) / 2;Quaternion avgRot = Quaternion.Lerp(interactor1.attachTransform.rotation, interactor2.attachTransform.rotation, 0.5f);transform.position = avgPos;transform.rotation = avgRot;}
}

场景3:可破坏物体

  1. 监听 OnSelectEntered 事件,检测抓取力度:
public float breakForce = 10.0f;private void OnGrab(XRBaseInteractor interactor)
{float grabSpeed = interactor.GetVelocity().magnitude;if (grabSpeed > breakForce){Destroy(gameObject); // 物体被抓碎}
}

7、高级用法与优化

自定义抓取条件

  1. 继承 XRGrabInteractable,重写 IsSelectableBy 方法:
public class CustomGrab : XRGrabInteractable
{public string requiredTag = "PlayerHand";public override bool IsSelectableBy(IXRSelectInteractor interactor){return interactor.CompareTag(requiredTag) && base.IsSelectableBy(interactor);}
}

动态调整抓取参数

  1. 根据物体状态(如被浸泡在水中)修改物理属性:
void Update()
{if (isUnderwater){GetComponent<Rigidbody>().drag = 5.0f; // 增加阻力velocityScale = 0.5f; // 降低投掷速度}
}

抓取动画与特效

  1. 使用 OnSelectEntered 触发抓取动画(如手柄振动、物体高亮)。
  2. 结合 Particle System 实现抓取/释放时的粒子特效。

8、常见问题与解决

问题:抓取后物体抖动

解决

  • 启用 Rigidbody 的插值(Interpolate)。
  • 降低 Velocity Tracking 的平滑时间。

问题:投掷力度不足

调整

  • 增加 Velocity Scale 或检查手柄速度计算逻辑。

问题:多抓取时物体偏移

优化

  • 调整 Attach Ease In Time 或手动计算双手平均位置。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com