前言:

根据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); // 玩家触碰后销毁物体
}
}

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐