跳到主要内容

usePhysics

usePhysics 检查物理是否启用、加载及发生错误。

物理引擎延迟加载和实例化,因此内容可先显示,再通过此 hook 响应状态。

详见物理指南、Rigidbody 和 Collision。

用法​

条件渲染​

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
物理加载时发生的错误,没有错误时为空。
-