跳到主要内容

<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
设置或获取组件的启用状态。
-