usePhysics
usePhysics 检查物理是否启用、加载及发生错误。
物理引擎延迟加载和实例化,因此内容可先显示,再通过此 hook 响应状态。
用法
条件渲染
import { usePhysics } from '@playcanvas/react/hooks'
function PhysicsInfo() {
const { isPhysicsEnabled, isPhysicsLoaded, physicsError } = usePhysics()
if (!isPhysicsLoaded) return null
return (<Entity>
<Rigidbody type="box" />
<Collision type="box" />
<Render type="box" />
</Entity>)
}
安全创建物理组件
import { usePhysics } from '@playcanvas/react/hooks'
function SafePhysicsEntity() {
const { isPhysicsEnabled, isPhysicsLoaded } = usePhysics()
return (
<Entity>
<Render type="box" />
{isPhysicsEnabled && isPhysicsLoaded && (
<>
<Collision type="box" />
<Rigidbody type="dynamic" mass={5} />
</>
)}
</Entity>
)
}
物理回退方案
import { usePhysics } from '@playcanvas/react/hooks'
function PhysicsWithFallback() {
const { isPhysicsEnabled, isPhysicsLoaded } = usePhysics()
if (isPhysicsEnabled && isPhysicsLoaded) {
return (
<Entity>
<Collision type="box" />
<Rigidbody type="dynamic" mass={10} />
<Render type="box" />
</Entity>
)
}
// Fallback without physics
return (
<Entity>
<Render type="box" />
</Entity>
)
}
属性
| 名称 | 类型与说明 | 默认值 |
|---|---|---|
isPhysicsEnabled | boolean应用是否启用物理。 | - |
isPhysicsLoaded | boolean物理库是否已成功加载。 | - |
physicsError | Error | null物理加载时发生的错误,没有错误时为空。 | - |
相关内容
- useApp:访问应用。
- Collision:碰撞形状。
- Rigidbody:刚体。
- Application:通过 usePhysics 启用。