You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity中添加XRGrabInteractable后球体出现重力碰撞异常问题

解决XRGrabInteractable添加后球体自动掉落的问题

当你给球体添加XRGrabInteractable组件时,Unity的XR交互系统会自动为物体添加Rigidbody和Collider组件,而Rigidbody默认开启重力,这就是球体掉落的原因。

以下是两种解决思路:

1. 手动控制物理组件,禁用自动添加功能

通过代码关闭XRGrabInteractable的自动添加逻辑,按需手动添加组件并配置属性:

grabInteractable = sphereObject.AddComponent<XRGrabInteractable>();

// 清空自动添加的碰撞体列表,阻止自动生成碰撞组件
grabInteractable.colliders.Clear();

// 手动添加碰撞体(按需选择类型)
var sphereCollider = sphereObject.AddComponent<SphereCollider>();
sphereCollider.isTrigger = false;

// 手动添加Rigidbody并关闭重力
var rb = sphereObject.AddComponent<Rigidbody>();
rb.useGravity = false;
rb.isKinematic = true; // 设为运动学,物体不受物理引擎影响,抓取时XR系统会自动切换状态

2. 修改自动生成的Rigidbody属性

如果不想改动自动添加逻辑,直接修改生成的Rigidbody参数即可:

grabInteractable = sphereObject.AddComponent<XRGrabInteractable>();

// 获取自动添加的Rigidbody组件
Rigidbody rb = sphereObject.GetComponent<Rigidbody>();
if (rb != null)
{
    rb.useGravity = false;
    rb.isKinematic = true;
}

另外,你也可以在Inspector面板中先创建一个XRGrabInteractable预制体,关闭Auto Add Rigidbody和Auto Add Collider选项,再通过代码实例化该预制体,从根源避免自动生成物理组件。

内容的提问来源于stack exchange,提问作者Omar Alhussani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 03:36:07