当前位置: 首页 > news >正文

unity pico开发 四 物体交互 抓取 交互层级

文章目录

    • 手部设置
    • 物体交互
    • 物体抓取
      • 添加抓取
      • 抓取三种类型
      • 抓取点偏移
      • 抓取事件
      • 抓取时不让物体吸附到手部
    • 射线抓取
    • 交互层级

手部设置

为手部(LeftHandController)添加XRDirInteractor脚本
并添加一个球形碰撞盒,勾选isTrigger,调整大小为0.1
在这里插入图片描述

物体交互

创建一个cube当桌子,再创建一个cube当交互物体,交互cube建议大小为0.1
在这里插入图片描述
创建三个材质球,将交互物体的材质改为红色
在这里插入图片描述
为交互物体添加刚体,
为交互物体添加一个XRSimpleInteractable脚本,注意不需要拖拽Colliders
在这里插入图片描述
然后如下设置交互事件,在事件上右键可以复制粘贴
在这里插入图片描述
此时运行,手碰到cube会变成绿色,按下抓取键会变成换色,手离开cube会重新变红

物体抓取

添加抓取

创建一个新cube,添加刚体,添加XR Grab Interactable组件,不需要拖拽colliders属性

取消勾选retain Transform Parent,这会让物体在结束抓取时重新返回原来的父物体下,到那时如果父物体的缩放xyz值不同,会导致模型顶点选择错误
在这里插入图片描述

此时运行即可抓取

抓取三种类型

在这里插入图片描述
VelocityTracking:不能穿过桌子,使用碰撞盒进行物理交互
Kinematic:可以穿过桌子,使用碰撞盒进行物理交互
Instantaneous:可以穿过桌子,使用碰撞盒进行物理交互,但是会不精确

抓取点偏移

创建一个空物体作为抓取对象的子物体,然后放在合适的抓取点上,将空物体拖拽给XRGrabInteractable上的AttachTransform上
在这里插入图片描述

抓取事件

可以通过在XRGrabInteractor脚本直接拖拽的方式绑定事件
在这里插入图片描述
也可以使用脚本绑定,例如

public class FireBulletOnActivate : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){//被抓取物体的交互组件XRGrabInteractable grabable = GetComponent<XRGrabInteractable>();grabable.activated.AddListener(FireBullet);}public void FireBullet(ActivateEventArgs arg){print("射击");}
}

抓取时不让物体吸附到手部

对于interaction Toolkit2.1以上的版本,可以直接勾选Use Dynamic Attach
在这里插入图片描述
对于旧版本,我们可以自己重写抓取脚本,将抓取点放到手上,即可实现不吸附的效果

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR.Interaction.Toolkit;public class XROffsetGrabInteractable : XRGrabInteractable
{private void Start(){if (!attachTransform){GameObject attachPoint = new GameObject("Offset Grab Pivot");attachPoint.transform.SetParent(transform,false);attachTransform = attachPoint.transform;}}protected override void OnSelectEntered(SelectEnterEventArgs args){print("进入");attachTransform.position = args.interactorObject.transform.position;attachTransform.rotation = args.interactorObject.transform.rotation;base.OnSelectEntered(args);}
}

直接挂载,不需要其他操作
在这里插入图片描述

射线抓取

就是普通的射线,默认就可以进行抓取操作
右键XR/RayInteractor(Action-base),然后设置好XRController组件的预制数据,对准需要抓取的物体,按下抓取键即可进行抓取

射线抓取和手部的XR Direct Interactor同时使用会造成可以抓两次的错误

如果将射线的XR Interactor Line Visual的颜色透明度改为0,那么将只在只想可抓取物体时,才会显示射线

如果取消勾选射线的XR Ray Interactor组件上的ForceGrab,那么抓取时将保持射线的距离
在这里插入图片描述

抓取时可以用摇杆控制旋转和远近

交互层级

射线本身是多功能的,既可以用来移动也可以用来抓取
但是我们希望有些射线只能用来移动,有些只能用来抓取
可以使用分层功能

注意,不是Unity本身的layer,而是interaction toolkit自己的layer

使用方法
找到手上的XR Direct Interactor 或者射线的XR Ray Interactor,选择层级,点开,添加新层级,然后设置
在这里插入图片描述

在这里插入图片描述
为需要交互的物体找到各自的层级设置,如地面,可抓取物体等,设置好要响应的层级,此时他们将只响应对应层级的交互器
在这里插入图片描述
在这里插入图片描述

相关文章:

unity pico开发 四 物体交互 抓取 交互层级

文章目录 手部设置物体交互物体抓取添加抓取抓取三种类型抓取点偏移抓取事件抓取时不让物体吸附到手部 射线抓取交互层级 手部设置 为手部&#xff08;LeftHandController&#xff09;添加XRDirInteractor脚本 并添加一个球形碰撞盒&#xff0c;勾选isTrigger,调整大小为0.1 …...

基于深度学习的青花瓷图像检索系统开发与实现

目录 1.研究背景与目的 1.1课题背景 1.2研究目的 二、调研资料情况 2.1图像分割研究现状 2.2图像检索调研 2.2.1选择深度学习进行检索的原因及优势 2.2.2基于深度学习的图像检索技术的发展 2.2.3基于深度学习的图像检索的研究重点 2.3基于深度学习的图像检索方法调研 …...

uniapp 系统学习,从入门到实战(八)—— Vuex 的使用

全篇大概 4500 字(含代码)&#xff0c;建议阅读时间 30min &#x1f4da; 目录 Vuex核心概念解析在 UniApp 中集成Vuex状态管理与数据共享实践总结 一、Vuex 核心概念解析 1.1 什么是状态管理 在跨多组件的大型应用中&#xff0c;不同页面/组件需要共享和修改相同数据时&am…...

Vue Hooks 深度解析:从原理到实践

Vue Hooks 深度解析&#xff1a;从原理到实践 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff01;点我试试&#xff01;&#xff01; 文章目录 Vue Hooks 深度解析&#xff1a;从原理到实践一、背景…...

django中序列化器serializer 的高级使用和需要注意的点

在 Django REST framework(DRF)中,序列化器(Serializer)是一个强大的工具,用于将复杂的数据类型(如 Django 模型实例)转换为 Python 原生数据类型,以便将其渲染为 JSON、XML 等格式,同时也能将接收到的外部数据反序列化为 Django 模型实例。以下将介绍序列化器的高级…...

靶场(二)---靶场心得小白分享

开始&#xff1a; 看一下本地IP 21有未授权访问的话&#xff0c;就从21先看起 PORT STATE SERVICE VERSION 20/tcp closed ftp-data 21/tcp open ftp vsftpd 2.0.8 or later | ftp-anon: Anonymous FTP login allowed (FTP code 230) |_Cant get dire…...

PHP Error处理指南

PHP Error处理指南 引言 在PHP开发过程中,错误处理是一个至关重要的环节。正确的错误处理不仅能够提高代码的健壮性,还能提升用户体验。本文将详细介绍PHP中常见的错误类型、错误处理机制以及最佳实践,帮助开发者更好地应对和处理PHP错误。 PHP错误类型 在PHP中,错误主…...

视频输入设备-V4L2的开发流程简述

一、摄像头的工作原理与应用 基本概念 V4L2的全称是Video For Linux Two&#xff0c;其实指的是V4L的升级版&#xff0c;是linux系统关于视频设备的内核驱动&#xff0c;同时V4L2也包含Linux系统下关于视频以及音频采集的接口&#xff0c;只需要配合对应的视频采集设备就可以实…...

【Manus资料合集】激活码内测渠道+《Manus Al:Agent应用的ChatGPT时刻》(附资源)

DeepSeek 之后&#xff0c;又一个AI沸腾&#xff0c;冲击的不仅仅是通用大模型。 ——全球首款通用AI Agent的破圈启示录 2025年3月6日凌晨&#xff0c;全球AI圈被一款名为Manus的产品彻底点燃。由Monica团队&#xff08;隶属中国夜莺科技&#xff09;推出的“全球首款通用AI…...

Mybatis集合嵌套查询,三级嵌套

三个表&#xff1a;房间 玩家 玩家信息 知识点&#xff1a;Mybatis中级联有关联&#xff08;association&#xff09;、集合&#xff08;collection&#xff09;、鉴别器&#xff08;discriminator&#xff09;三种。其中&#xff0c;association对应一对一关系、collectio…...

thinkphp5.1 在fetch模版就超时

场景 当被渲染模版不存在&#xff0c;请求不响应任何内容&#xff0c;过一会就timeout 排查过程 使用xdebug,追踪代码&#xff0c;发现走到D:\temporary_files\m40285_mini\40285_mini\thinkphp\library\think\exception\Handle.php&#xff0c;进入死循环&#xff0c;一直…...

Dockerfile 深入浅出:从基础到进阶全解析

Dockerfile 深入浅出&#xff1a;从基础到进阶全解析 各位同学&#xff0c;大家好&#xff01;欢迎来到今天的 Dockerfile 课程。Docker 技术在当今的软件开发和部署领域可以说是非常热门&#xff0c;而 Dockerfile 作为构建 Docker 镜像的关键文件&#xff0c;掌握它对于我们…...

CAD2025电脑置要求

Windows 系统 操作系统&#xff1a;64 位 Microsoft Windows 11 和 Windows 10 version 1809 或更高版本。 处理器 基本要求&#xff1a;2.5-2.9GHz 处理器&#xff0c;不支持 ARM 处理器。 推荐配置&#xff1a;3GHz 以上处理器&#xff08;基础&#xff09;&#xff0c;4GHz …...

android App主题颜色动态更换

如何在Android开发中更换主题颜色&#xff0c;现在他们又问了关于动态更换应用主题颜色的问题。看来他们可能在实现过程中遇到了困难&#xff0c;或者需要更详细的动态切换指导。首先&#xff0c;我需要回顾之前的回答&#xff0c;看看是否已经覆盖了动态切换的部分&#xff0c…...

微服务,服务治理nacos,负载均衡LOadBalancer,OpenFeign

1.微服务 简单来说&#xff0c;微服务架构风格[1]是一种将一个单一应用程序开发为一组小型服务的方法&#xff0c;每个服务运行在 自己的进程中&#xff0c;服务间通信采用轻量级通信机制(通常用HTTP资源API)。这些服务围绕业务能力构建并 且可通过全自动部署机制独立部署。这…...

浅论数据库聚合:合理使用LambdaQueryWrapper和XML

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、数据库聚合替代内存计算&#xff08;关键优化&#xff09;二、批量处理优化四、区域特殊处理解耦五、防御性编程增强 前言 技术认知点&#xff1a;使用 XM…...

FastGPT 引申:混合检索完整实例

文章目录 FastGPT 引申&#xff1a;混合检索完整实例1. 各检索方式的初始结果2. RRF合并过程3. 合并后的结果4. Rerank重排序后5. 最终RRF合并6. 内容总结 FastGPT 引申&#xff1a;混合检索完整实例 下边通过一个简单的例子说明不同检索方式的分值变化过程&#xff0c;假设我…...

Socket.IO聊天室

项目代码 https://github.com/R-K05/Socket.IO- 创建项目 服务端项目和客户端项目 安装Socket依赖 服务端 npm i socket.io 客户端 npm i socket.io-client 客户端添加聊天页面 源码 服务端 app.js const express require("express") const app express()co…...

MySQL表中数据基本操作

1.表中数据的插入&#xff1a; 1.insert insert [into] table_name [(column [,column]...)] values (value_list) [,(value_list)] ... 创建一张学生表&#xff1a; 1.1单行指定列插入&#xff1a; insert into student (name,qq) values (‘张三’,’1234455’); values左…...

可狱可囚的爬虫系列课程 16:爬虫重试机制

一、retrying模块简介 在爬虫中&#xff0c;因为我们是在线爬取内容&#xff0c;所以可能会因为网络、服务器等原因导致报错&#xff0c;那么这类错误出现以后&#xff0c;我们想要做的肯定是在报错处进行重试操作&#xff0c;Python提供了一个很好的模块&#xff0c;能够直接帮…...

OFA模型与AI编程助手结合:自动生成代码注释中的图像描述

OFA模型与AI编程助手结合&#xff1a;自动生成代码注释中的图像描述 1. 引言 你有没有遇到过这种情况&#xff1f;接手一个老项目&#xff0c;代码里引用了好几张图表或者UI设计图&#xff0c;但注释里只有一句“详见图片”&#xff0c;图片文件本身命名又很随意&#xff0c;…...

oletools实战:5步识别恶意宏代码的完整指南

oletools实战&#xff1a;5步识别恶意宏代码的完整指南 【免费下载链接】oletools oletools - python tools to analyze MS OLE2 files (Structured Storage, Compound File Binary Format) and MS Office documents, for malware analysis, forensics and debugging. 项目地…...

Detectron2模型训练实战:用自定义数据集训练Mask R-CNN(PyTorch 1.8+环境)

Detectron2模型训练实战&#xff1a;用自定义数据集训练Mask R-CNN&#xff08;PyTorch 1.8环境&#xff09; 1. 环境准备与框架安装 在开始训练之前&#xff0c;确保你的系统满足以下基本要求&#xff1a; 操作系统&#xff1a;Linux或Windows&#xff08;需额外配置&#xff…...

OpenClaw+Qwen3.5-4B-Claude:3个提升开发效率的自动化技巧

OpenClawQwen3.5-4B-Claude&#xff1a;3个提升开发效率的自动化技巧 1. 为什么开发者需要OpenClaw&#xff1f; 作为一名长期奋战在代码一线的开发者&#xff0c;我一直在寻找能够真正减轻重复劳动的工具。直到遇到OpenClaw与Qwen3.5-4B-Claude的组合&#xff0c;才发现原来…...

如何快速优化Windows掌机:终极体感控制完整指南

如何快速优化Windows掌机&#xff1a;终极体感控制完整指南 【免费下载链接】HandheldCompanion ControllerService 项目地址: https://gitcode.com/gh_mirrors/ha/HandheldCompanion 还在为Windows掌机操作不够精准、游戏兼容性差、配置切换麻烦而烦恼吗&#xff1f;Ha…...

Creo新手必看:如何快速搞定紫铜零件单位换算(附密度设置技巧)

Creo实战指南&#xff1a;紫铜零件单位换算与材料密度设置全解析 在三维建模领域&#xff0c;精确的材料属性设置往往被初学者忽视&#xff0c;却直接影响产品设计的可靠性和后续分析结果。作为Creo入门用户&#xff0c;当你第一次尝试为紫铜零件计算重量时&#xff0c;可能会…...

深入解析PyTorch中.pth文件的保存与加载机制

1. 揭开.pth文件的神秘面纱 第一次接触PyTorch时&#xff0c;看到那些以.pth结尾的文件&#xff0c;你是不是也和我当初一样充满疑惑&#xff1f;这些看似普通的文件&#xff0c;实际上是PyTorch模型持久化的关键。简单来说&#xff0c;.pth文件就像是给AI模型拍的一张"照…...

Navicat密码解密工具:企业级数据安全与密码恢复解决方案

Navicat密码解密工具&#xff1a;企业级数据安全与密码恢复解决方案 【免费下载链接】navicat_password_decrypt 忘记navicat密码时,此工具可以帮您查看密码 项目地址: https://gitcode.com/gh_mirrors/na/navicat_password_decrypt Navicat密码解密工具是一款专为数据库…...

告别卡顿与路径混乱:手把手教你配置ArcMap 10.x的个性化工作环境

告别卡顿与路径混乱&#xff1a;手把手教你配置ArcMap 10.x的个性化工作环境 ArcMap作为GIS领域的经典工具&#xff0c;其功能强大但默认配置往往无法满足专业用户的效率需求。许多GIS从业者都经历过这样的困扰&#xff1a;软件启动缓慢、数据路径杂乱无章、常用工具隐藏过深。…...

告别手动gc.collect()!2026 Python内存自适应策略上线:动态分代阈值、对象生命周期AI建模、NUMA感知分配器三合一

第一章&#xff1a;Python 智能体内存管理策略 2026 最新趋势Python 在 2026 年已深度融入 AI 基础设施与边缘智能体&#xff08;Intelligent Agent&#xff09;系统&#xff0c;其内存管理机制正从传统引用计数 循环检测双层模型&#xff0c;演进为感知式、上下文驱动的动态调…...