unity基础自学2.3:移动和抓握物品

文章目录

  • 前言:
  • 1、基础配置
    • ①XR Interaction Toolkit
    • ②创建一个XR场景
    • ③示例文件实现
    • ④ 一键配置(PICO Building Blocks)
  • 2、射线移动物品和抓握物品
    • 方法一:Grab Interactable
    • 方法二:prefab
  • 3、Box Collider的作用与使用
    • 解析 Box Collider的作用
      • ① 物理碰撞检测
      • ③ 射线检测(Raycast)
    • 如何正确使用 Box Collider
      • (1) 基本配置
      • (2) 与 Rigidbody 的配合
      • (3) 触发区域设置

前言:

根据pico官方文档进行配置交互,其中有一些基础的问题点不是很理解,在这边进行简要的记录。

1、基础配置

①XR Interaction Toolkit

版本:3.0.3 · May 03, 2024
获取方式:window-> packageManager -> 选择需要的package,通过Changelog查看各个版本,在通过Add version by name进行添加

②创建一个XR场景

如何创建一个XR场景
如果是第一次进行实现的话,最好是先看一遍官网创建第一个XR场景,再往下看,不然很多东西是不理解的。

③示例文件实现

如何下载开源示例代码与资源
这个示例文件是PICO官网的交互示例,可以重点看一下,把响应

④ 一键配置(PICO Building Blocks)

PICO Building Blocks 系统可以帮助你在项目里一键完成功能配置,包括 PICO Unity Integration SDK 和 Unity 官方提供的功能。 如何使用PICO Building Blocks进行一键设置

2、射线移动物品和抓握物品

方法一:Grab Interactable

GameObjection -> XR -> Grab Interactable 再将物品作为其子项
在以下截图中,Far Attach Mode设置为near,可实现抓握物品
在这里插入图片描述

方法二:prefab

①在Hierarchy中直接添加一个prefab文件
②添加component -> XR Grab Interactable 进行设置
③Add Component > Physics > Box Collider 添加物理碰撞体,

在这里插入图片描述

3、Box Collider的作用与使用

解析 Box Collider的作用

① 物理碰撞检测

碰撞响应:当两个带有碰撞器(Collider)和刚体(Rigidbody)的物体接触时,触发物理引擎的碰撞计算(如反弹、摩擦)。
② 触发事件检测
触发区域:勾选 Is Trigger 后,碰撞器变为触发区域,物体可穿透但会触发事件。
事件类型

void OnTriggerEnter(Collider other) { /* 进入触发区域 */ }  
void OnTriggerExit(Collider other)  { /* 离开触发区域 */ }

③ 射线检测(Raycast)

碰撞检测基础:Box Collider 为射线检测提供碰撞体积,用于判断是否击中目标。

Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit)) {Debug.Log("击中物体:" + hit.collider.name);
}

如何正确使用 Box Collider

(1) 基本配置

为物体添加 Box Collider:
菜单栏:Component > Physics > Box Collider。
调整碰撞体尺寸:
在 Inspector 中修改 Size 和 Center,使其匹配物体的视觉模型。

(2) 与 Rigidbody 的配合

动态碰撞:
若物体需要受物理引擎控制(如重力、外力),需附加 Rigidbody 组件。
csharp
Rigidbody rb = GetComponent();
rb.AddForce(Vector3.forward * 10f);
静态碰撞:
若物体静止(如地面),只需添加 Collider,无需 Rigidbody。

(3) 触发区域设置

勾选 Is Trigger。
编写触发事件逻辑:
csharp
void OnTriggerEnter(Collider other) {
if (other.CompareTag(“Player”)) {
Destroy(gameObject); // 玩家触碰后销毁物体
}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/78137.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pytest基础-new

规范 1、首先创建 py 文件命名以 test_ 开始或者以 _test 结尾 2、若是新建类,测试类需要以 Test_开头 3、测试用例(方法)需要以 test_开头 assert 断言 assert xx:判断 xx 为真 assert not xx:判断 xx 不为真 asse…

【华为OD机试真题】232、统计射击比赛成绩 | 机试真题+思路参考+代码分析(C++)

题目描述 给定一个射击比赛成绩单,包含多个选手若干次射击的成绩分数,请对每个选手按其最高3个分数之和进行降序排名,输出降序排 名后的选手ID序列 条件如下: 1.一个选手可以有多个射击成绩的分数,且次序不固定 2.如果一个选手成绩少于3个,则认为选手的所有成绩无效,排名…

⭐Unity 开发 | 如何通过 NTP 网络时间实现精准的跨平台时间同步【附完整源码 + UI 模块 + 偏差分析】

🎮 项目实战 | 实现一套精确、可视化的游戏时间同步机制,让你的多人在线游戏摆脱“时间不一致”噩梦! 效果如图: 📌 一、前言:为什么不能只信本地时间? 在 Unity 游戏开发中,时间几…

Vue3 Composition API与十大组件开发案例详解

文章目录 一、Vue3核心API解析1.1 Composition API优势1.2 核心API 二、十大组件开发案例案例1:响应式表单组件案例2:动态模态框(Teleport应用)案例3:可复用列表组件案例4:全局状态通知组件案例5&#xff1…

Kafka 详细解读

1. Producer(生产部卷王) 职责:往 Kafka 里疯狂输出数据,KPI 是「日抛式消息海啸」 职场人设: 白天开会画饼,深夜写周报的奋斗逼,口头禅是「这个需求今晚必须上线!」代码里的「福报…

LicheeRV Nano 与Ubuntu官方risc-v 镜像混合

LicheeRV Nano 官方给的镜像并没有unbutu, unbutu官方有一个基于 LicheeRV Dock的镜像,想象能否将二者混合 (1)刷 LicheeRV Dock的镜像 nano无法启动 (2)将nano的boot分区替换掉 LicheeRV Dock的rootfs以外的分区也…

【模板匹配】图像处理(OpenCV)-part10

19.1模板匹配 模板匹配就是用模板图(通常是一个小图)在目标图像(通常是一个比模板图大的图片)中不断的滑动比较,通过某种比较方法来判断是否匹配成功,找到模板图所在的位置。 不会有边缘填充。 类似于卷积&#xff0c…

HTML:表格数据展示区

<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>人员信息表</title><link rel"styl…

MySQL 的锁,表级锁是哪一层的锁?行锁是哪一层的锁?

MySQL 的锁层级与类型 在 MySQL 中&#xff0c;锁的层级和实现与存储引擎密切相关。 1. 表级锁&#xff08;Table-Level Locks&#xff09; &#xff08;1&#xff09;存储引擎层的表级锁 实现层级&#xff1a;存储引擎层&#xff08;如 MyISAM、InnoDB&#xff09;。特点&a…

阿里巴巴按图搜索1688商品(拍立淘) API 返回值说明

阿里巴巴按图搜索1688商品&#xff08;拍立淘&#xff09;API 返回值说明 阿里巴巴按图搜索1688商品&#xff08;拍立淘&#xff09;API 的返回值通常以 JSON 格式返回&#xff0c;包含搜索结果、商品信息、分页信息等。以下是具体的返回值说明&#xff1a; 1. 请求状态信息 …

基于esp32-s3,写一个实现json键值对数据创建和读写解析c例程

以下是一个基于 ESP32 - S3 使用 ESP - IDF 框架实现 JSON 键值对数据创建、读写和解析的 C 语言例程。 环境准备 确保你已经安装了 ESP - IDF 开发环境&#xff0c;并且可以正常编译和烧录代码到 ESP32 - S3 开发板。 代码示例 #include <stdio.h> #include <stri…

MyBatis-Plus 使用 Wrapper 构建动态 SQL 有哪些优劣势?

MyBatis-Plus (MP) 提供的 Wrapper (如 QueryWrapper, LambdaQueryWrapper, UpdateWrapper, LambdaUpdateWrapper) 是其核心特性之一&#xff0c;它允许我们在开发时以面向对象的方式构建 SQL 的 WHERE 条件、ORDER BY、SELECT 字段列表等部分。与传统的 MyBatis 在 XML 文件中…

STM32与i.MX6ULL内存与存储机制全解析:从微控制器到应用处理器的设计差异

最近做FreeRTos&#xff0c;以及前面设计的RVOS&#xff0c;这种RTOS级别的系统内存上的分布与CortexA系列里面的分布有相当大的区别&#xff0c;给我搞糊涂了。 目录 STM32&#xff08;Cortex-M系列&#xff09;的内存与存储机制 Flash存储内容RAM存储内容启动与运行时流程示例…

Eteam 0.3版本开发规划

Eteam 0.1系列经历了3个小版本&#xff0c;主要完成了团队资料库功能。 Eteam 0.2系列经历了22个小版本&#xff0c;主要完成了白板和AI交互的能力。 目前的问题 目前白板上的数据有两个来源&#xff0c;团队资料库和外部数据。外部数据和团队资料库数据边界不是很清晰。 0.3版…

HTML5好看的水果蔬菜在线商城网站源码系列模板5

文章目录 1.设计来源1.1 主界面1.2 关于我们1.3 商品服务1.4 果蔬展示1.5 联系我们1.6 商品具体信息1.7 登录注册 2.效果和源码2.1 动态效果2.2 源代码 源码下载万套模板&#xff0c;程序开发&#xff0c;在线开发&#xff0c;在线沟通 作者&#xff1a;xcLeigh 文章地址&#…

深入理解Java包装类:自动装箱拆箱与缓存池机制

深入理解Java包装类&#xff1a;自动装箱拆箱与缓存池机制 对象包装器 Java中的数据类型可以分为两类&#xff1a;基本类型和引用类型。作为一门面向对象编程语言&#xff0c; 一切皆对象是Java语言的设计理念之一。但基本类型不是对象&#xff0c;无法直接参与面向对象操作&…

uniapp自定义拖拽排列

uniapp自定义拖拽排列并改变下标 <!-- 页面模板 --> <template><view class"container"><view v-for"(item, index) in list" :key"item.id" class"drag-item" :style"{transform: translate(${activeInde…

基于SpringBoot的课程管理系统

前言 今天给大家分享一个基于SpringBoot的课程管理系统。 1 系统介绍 课程管理系统是一种专门为学校设计的软件系统&#xff0c;旨在帮助学校高效地管理和组织各类课程信息。 该系统通常包括学生、教师和管理员三大角色。 他们可以通过系统进行选课、查看课程表、考试、进…

max31865典型电路

PT100读取有很多种方案&#xff0c;常用的惠斯通电桥&#xff0c;和专用IC max31865 。 电阻温度检测器(RTD)是一种阻值随温度变化的电阻。铂是最常见、精度最高的测温金属丝材料。铂RTD称为PT-RTD&#xff0c;镍、铜和其它金属亦可用来制造RTD。RTD具有较宽的测温范围&#x…

飞算 JavaAI 与 Spring Boot:如何实现微服务开发效率翻倍?

微服务架构凭借其高内聚、低耦合的特性&#xff0c;成为企业构建复杂应用系统的首选方案。然而&#xff0c;传统微服务开发流程中&#xff0c;从服务拆分、接口设计到代码编写、调试部署&#xff0c;往往需要耗费大量时间与人力成本。Spring Boot 作为 Java 领域最受欢迎的微服…