文章目录
- 前言:
- 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); // 玩家触碰后销毁物体
}
}