<Collision/>
为实体添加引擎 CollisionComponent。
检测与其他碰撞实体的相交,可用于物理、触发区域和其他机制。
备注
先安装 sync-ammo,并在 Application 设置 usePhysics。
用法
像 Render 一样挂到 Entity。需要物理时,还应为同实体添加 Rigidbody,通常也会添加可视 Render。
import { Application, Entity } from '@playcanvas/react'
import { Collision, Rigidbody, Render } from '@playcanvas/react/components'
export default function Scene() {
return (
<Application usePhysics>
<Entity>
<Collision type="box" />
<Rigidbody type="dynamic" mass={12} />
<Render type="box" />
</Entity>
</Application>
)
}
详见 CollisionComponent 和 Rigidbody。
属性
| 名称 | 类型与说明 | 默认值 |
|---|---|---|
type? | "box" | "capsule" | "compound" | "cone" | "cylinder" | "mesh" | "sphere" | - |
halfExtents? | [number, number, number]设置或获取箱形碰撞体在 X、Y、Z 轴的半尺寸,默认 [0.5, 0.5, 0.5]。更新形状时使用 setter。 | - |
linearOffset? | [number, number, number]设置或获取碰撞形状相对实体位置沿局部轴的偏移,默认 [0, 0, 0]。更新形状时使用 setter。 | - |
angularOffset? | [number, number, number, number]设置或获取碰撞形状相对实体局部旋转的偏移,默认为单位旋转。更新形状时使用 setter。 | - |
radius? | number设置或获取球、胶囊、圆柱或圆锥碰撞体的半径,默认 0.5。 | - |
axis? | number设置或获取胶囊、圆柱、圆锥长度对齐的局部轴:0 为 X,1 为 Y,2 为 Z。默认 1,即 Y 轴。 | - |
height? | number设置或获取胶囊、圆柱、圆锥从端点到端点的总高度,默认 2。 | - |
asset? | number | Asset<string> | null设置或获取网格碰撞体模型的资源或资源 ID,默认 null。模型节点层级按实体局部空间解释:先将各节点变换应用到网格,再乘以实体世界缩放。 | - |
renderAsset? | number | Asset<string> | null设置网格碰撞体的渲染资源或资源 ID,默认 null。未设置时改用 asset。网格在实体局部空间中使用,并应用实体世界缩放。获取时返回渲染资源 ID。 | - |
convexHull? | boolean设置或获取是否将碰撞网格作为凸包。false 时仅支持静态刚体;true 时支持静态、动态与运动学刚体。凸包由应用实体世界缩放后的网格顶点构建,仅适用于 CollisionComponent#renderAsset 或 render,默认 false。 | - |
model? | Model | null设置或获取为网格碰撞体添加到场景图的模型。 | - |
checkVertexDuplicates? | boolean设置或获取创建碰撞网格时是否检查重复顶点。 | - |
system? | ComponentSystem创建此组件的 ComponentSystem。 | - |
entity? | Entity此组件挂载的 Entity。 | - |
enabled? | boolean设置或获取组件的启用状态。 | - |