# 刚体和全局物理

⚠️ 刚体物理功能目前尚在Beta阶段,并且需要2.32.1及之后的基础库才能使用。

# 全局物理

要让当前的场景成为一个物理世界,需要先在<xr-scene>下配置一个<xr-physics>标签:

<xr-scene>
    <xr-physics />
    ...(场景中的其他标签)
</xr-scene>

⚠️ <xr-physics>标签只能位于<xr-scene>下一级,不能放置在更深的层级中。

# 全局物理配置

可以通过修改在<xr-physics>上的属性来配置全局物理参数(目前仅开放了少数配置项):

属性名 描述 值类型 备注
disabled 是否禁用物理 boolean disable=true的话,效果和不存在<xr-physics>标签时一致。
gravity 全局重力 Vector3 默认重力(0, -9.8, 0)

# 刚体

在标签上添加rigidbody属性来使其成为一个刚体:

<xr-mesh ... rigidbody />

添加之后就能观察到物体受重力影响而下落了。

# 刚体配置

通过为rigidbody属性添加属性值来修改刚体配置:

<xr-mesh ... rigidbody="mass: 5.0" />
属性值 描述 值类型 备注
disabled 是否禁用刚体 boolean disable=true的话,效果和不存在rigidbody属性时一致。
mass 刚体质量 number mass > 0
useGravity 是否受重力影响 boolean
constraintsMask 限制刚体在某个轴上的移动 number 具体指参考 @TODO

# 刚体组件

标签上的rigidbody属性对应元素上的Rigidbody组件。
使用Rigidbody组件上的方法可以移动刚体或者修改刚体属性:

方法名 描述 备注
addForce / addTorque 是否禁用刚体 对刚体施加力,产生加速度。
sleep / wakeUp 强制刚体睡眠/唤醒 正常情况下睡眠状态是由物理引擎自动管理的,如果发现刚体异常静止,可以尝试手动wakeUp。