使用指南
Cocos 组件 / 3D物理 / Constraint节点
Cocos 组件 / 3D物理 / Constraint 节点手册,包含 8 个节点的用途、引脚、使用场景和注意事项。
学习目标
访问 Cocos Creator 组件的属性、方法和事件,把引擎能力转成可视化工作流。
覆盖范围
- 节点数量:8
- 分类路径:Cocos 组件 / 3D物理 / Constraint
典型使用场景
- 控制 UI、音频、动画、物理、灯光、粒子和渲染组件
- 读取组件状态后驱动游戏逻辑
- 批量设置组件属性完成游戏运行时效果
通用注意事项
- 目标组件引脚必须连接正确的组件实例。
- 设置类节点通常需要接入执行流,才会真正修改游戏运行时状态。
- 部分组件能力受 Cocos Creator 版本限制,页面会标出版本字段。
节点索引
| 节点 | 节点 ID | 输入/输出 | 执行方式 |
|---|---|---|---|
| 获取附着刚体 | constraintGetAttachedBody | 1 / 1 | 立即继续 |
| 获取连接刚体 | constraintGetConnectedBody | 1 / 1 | 立即继续 |
| 获取碰撞开关 | constraintGetEnableCollision | 1 / 1 | 立即继续 |
| 获取全部属性 | constraintGetProperties | 1 / 4 | 立即继续 |
| 获取约束类型 | constraintGetType | 1 / 1 | 立即继续 |
| 设置连接刚体 | constraintSetConnectedBody | 3 / 2 | 立即继续 |
| 设置碰撞开关 | constraintSetEnableCollision | 3 / 2 | 立即继续 |
| 设置全部属性 | constraintSetProperties | 4 / 2 | 立即继续 |
获取附着刚体
获取附着刚体:返回当前约束所在节点上的 RigidBody 组件。 因为约束必须挂在一个有刚体的节点上才能起作用,所以这个值通常不会为空。 只读提示:这个属性只能读取不能修改。如果你想让约束连到不同的刚体上,应该操作另一个节点上的约束组件。
节点信息
| 字段 | 值 |
|---|---|
| 节点 ID | constraintGetAttachedBody |
| 分类 | Cocos 组件 |
| 二级分类 | 3D物理 |
| 分组 | Constraint |
| 是否需要等待结果 | 否 |
| 是否需要先选择目标 | 否 |
输入引脚
| 引脚 ID | 名称 | 连接方式 | 值类型 | 用途 | 默认或选择 | 连接要求 |
|---|---|---|---|---|---|---|
constraint | 约束 | 数据 | cc.Component / Constraint | 目标约束组件 要操作的约束组件。 所有 3D 约束子类(FixedConstraint、HingeConstraint、PointToPointConstraint、ConfigurableConstraint)都可以接入这里的节点,用来读取或修改基类的公共属性——比如把约束另一端连接到哪个刚体上。 | - | 必填 |
输出引脚
| 引脚 ID | 名称 | 连接方式 | 值类型 | 用途 | 默认或选择 | 连接要求 |
|---|---|---|---|---|---|---|
attachedBody | 附着刚体 | 数据 | cc.Component / RigidBody | 附着刚体 当前约束所在节点上的 RigidBody(只读)。通常不为空。 | - | 可选 |
使用场景
- 控制 UI、音频、动画、物理、灯光、粒子和渲染组件
- 读取组件状态后驱动游戏逻辑
- 批量设置组件属性完成游戏运行时效果
注意事项
- 适合的工作流类型:component、library、method、function、class。
- 目标组件引脚必须连接正确的组件实例。
- 设置类节点通常需要接入执行流,才会真正修改游戏运行时状态。
获取连接刚体
获取连接刚体:读取约束另一端连着的 RigidBody。 重要:如果这个值为 null,说明约束的另一端固定在世界空间里的某个位置——就像把一根绳子的一端钉在墙上,而墙上那一点就是”世界刚体”。这不是错误,是一种常见的用法。比如让一个物体悬挂在天花板上。
节点信息
| 字段 | 值 |
|---|---|
| 节点 ID | constraintGetConnectedBody |
| 分类 | Cocos 组件 |
| 二级分类 | 3D物理 |
| 分组 | Constraint |
| 是否需要等待结果 | 否 |
| 是否需要先选择目标 | 否 |
输入引脚
| 引脚 ID | 名称 | 连接方式 | 值类型 | 用途 | 默认或选择 | 连接要求 |
|---|---|---|---|---|---|---|
constraint | 约束 | 数据 | cc.Component / Constraint | 目标约束组件 要操作的约束组件。 所有 3D 约束子类(FixedConstraint、HingeConstraint、PointToPointConstraint、ConfigurableConstraint)都可以接入这里的节点,用来读取或修改基类的公共属性——比如把约束另一端连接到哪个刚体上。 | - | 必填 |
输出引脚
| 引脚 ID | 名称 | 连接方式 | 值类型 | 用途 | 默认或选择 | 连接要求 |
|---|---|---|---|---|---|---|
connectedBody | 连接刚体 | 数据 | cc.Component / RigidBody | 连接刚体 约束另一端连着的 RigidBody。null = 固定在世界空间(比如钉在墙上的锚点),不是错误。 | - | 可选 |
使用场景
- 控制 UI、音频、动画、物理、灯光、粒子和渲染组件
- 读取组件状态后驱动游戏逻辑
- 批量设置组件属性完成游戏运行时效果
注意事项
- 适合的工作流类型:component、library、method、function、class。
- 目标组件引脚必须连接正确的组件实例。
- 设置类节点通常需要接入执行流,才会真正修改游戏运行时状态。
获取碰撞开关
获取碰撞开关:查看被约束连接的两个刚体之间是否会发生碰撞。 默认是 关的(false)——两个物体虽然被约束连在一起,但它们像”同一条链子上的不同环节”,不会互相撞到对方。 如果打开(true),即使两个物体之间有约束连接,它们仍然会发生碰撞检测——适合做复杂机械结构的不同部件之间需要有真实的碰撞反馈。
节点信息
| 字段 | 值 |
|---|---|
| 节点 ID | constraintGetEnableCollision |
| 分类 | Cocos 组件 |
| 二级分类 | 3D物理 |
| 分组 | Constraint |
| 是否需要等待结果 | 否 |
| 是否需要先选择目标 | 否 |
输入引脚
| 引脚 ID | 名称 | 连接方式 | 值类型 | 用途 | 默认或选择 | 连接要求 |
|---|---|---|---|---|---|---|
constraint | 约束 | 数据 | cc.Component / Constraint | 目标约束组件 要操作的约束组件。 所有 3D 约束子类(FixedConstraint、HingeConstraint、PointToPointConstraint、ConfigurableConstraint)都可以接入这里的节点,用来读取或修改基类的公共属性——比如把约束另一端连接到哪个刚体上。 | - | 必填 |
输出引脚
| 引脚 ID | 名称 | 连接方式 | 值类型 | 用途 | 默认或选择 | 连接要求 |
|---|---|---|---|---|---|---|
enableCollision | 碰撞开关 | 数据 | boolean | 碰撞开关 true = 两个被约束连着的物体会互相碰撞;false(默认)= 不会互相碰撞。不影响它们与其他物体的碰撞。 | - | 可选 |
使用场景
- 控制 UI、音频、动画、物理、灯光、粒子和渲染组件
- 读取组件状态后驱动游戏逻辑
- 批量设置组件属性完成游戏运行时效果
注意事项
- 适合的工作流类型:component、library、method、function、class。
- 目标组件引脚必须连接正确的组件实例。
- 设置类节点通常需要接入执行流,才会真正修改游戏运行时状态。
获取全部属性
一次性读取全部约束属性:同时获取附着刚体、连接刚体、碰撞开关和约束类型。 适合做调试面板一次性查看约束的完整状态。注意:null 的连接刚体表示约束一端固定在世界空间。
节点信息
| 字段 | 值 |
|---|---|
| 节点 ID | constraintGetProperties |
| 分类 | Cocos 组件 |
| 二级分类 | 3D物理 |
| 分组 | Constraint |
| 是否需要等待结果 | 否 |
| 是否需要先选择目标 | 否 |
输入引脚
| 引脚 ID | 名称 | 连接方式 | 值类型 | 用途 | 默认或选择 | 连接要求 |
|---|---|---|---|---|---|---|
constraint | 约束 | 数据 | cc.Component / Constraint | 目标约束组件 要操作的约束组件。 所有 3D 约束子类(FixedConstraint、HingeConstraint、PointToPointConstraint、ConfigurableConstraint)都可以接入这里的节点,用来读取或修改基类的公共属性——比如把约束另一端连接到哪个刚体上。 | - | 必填 |
输出引脚
| 引脚 ID | 名称 | 连接方式 | 值类型 | 用途 | 默认或选择 | 连接要求 |
|---|---|---|---|---|---|---|
attachedBody | 附着刚体 | 数据 | cc.Component / RigidBody | 附着刚体 当前约束所在节点上的 RigidBody(只读)。通常不为空。 | - | 可选 |
connectedBody | 连接刚体 | 数据 | cc.Component / RigidBody | 连接刚体 约束另一端的 RigidBody。null = 固定在世界空间,不是错误。 | - | 可选 |
enableCollision | 碰撞开关 | 数据 | boolean | 碰撞开关 true = 被约束连接的两物体会碰撞;false(默认)= 不碰撞。 | - | 可选 |
type | 约束类型 | 数据 | enum / physics.EConstraintType | 约束类型(只读) 0 = 球铰,1 = 铰链,2 = 固定,3 = 可配置。 | - | 可选 |
使用场景
- 控制 UI、音频、动画、物理、灯光、粒子和渲染组件
- 读取组件状态后驱动游戏逻辑
- 批量设置组件属性完成游戏运行时效果
注意事项
- 适合的工作流类型:component、library、method、function、class。
- 目标组件引脚必须连接正确的组件实例。
- 设置类节点通常需要接入执行流,才会真正修改游戏运行时状态。
获取约束类型
获取约束类型:返回当前约束属于哪一种(点对点、铰链、固定、可配置)。 类型说明:
- POINT_TO_POINT (0):球铰——像人的肩膀,可以自由旋转但位置固定
- HINGE (1):铰链——像门的合页,只能绕一个轴转动
- FIXED (2):固定——像焊接,完全锁死相对位置和旋转
- CONFIGURABLE (3):可配置——自由度最高的关节,可以自定义各种约束规则 注意:这个值是构造时确定的只读常量,你不能在游戏运行时切换约束类型。想用不同的约束就得换组件。
节点信息
| 字段 | 值 |
|---|---|
| 节点 ID | constraintGetType |
| 分类 | Cocos 组件 |
| 二级分类 | 3D物理 |
| 分组 | Constraint |
| 是否需要等待结果 | 否 |
| 是否需要先选择目标 | 否 |
输入引脚
| 引脚 ID | 名称 | 连接方式 | 值类型 | 用途 | 默认或选择 | 连接要求 |
|---|---|---|---|---|---|---|
constraint | 约束 | 数据 | cc.Component / Constraint | 目标约束组件 要操作的约束组件。 所有 3D 约束子类(FixedConstraint、HingeConstraint、PointToPointConstraint、ConfigurableConstraint)都可以接入这里的节点,用来读取或修改基类的公共属性——比如把约束另一端连接到哪个刚体上。 | - | 必填 |
输出引脚
| 引脚 ID | 名称 | 连接方式 | 值类型 | 用途 | 默认或选择 | 连接要求 |
|---|---|---|---|---|---|---|
type | 约束类型 | 数据 | enum / physics.EConstraintType | 约束类型(只读) 0 = POINT_TO_POINT(球铰,可自由旋转),1 = HINGE(铰链,绕轴旋转),2 = FIXED(固定,焊接),3 = CONFIGURABLE(可配置,最灵活)。 | - | 可选 |
使用场景
- 控制 UI、音频、动画、物理、灯光、粒子和渲染组件
- 读取组件状态后驱动游戏逻辑
- 批量设置组件属性完成游戏运行时效果
注意事项
- 适合的工作流类型:component、library、method、function、class。
- 目标组件引脚必须连接正确的组件实例。
- 设置类节点通常需要接入执行流,才会真正修改游戏运行时状态。
设置连接刚体
设置连接刚体:修改约束另一端连接的 RigidBody。 空值语义:不连线或传入 null 时,约束另一端固定在世界参考点上。比如把吊灯的一端固定在屋顶。 常见用例:
- 把两个物体”拴”在一起——比如角色手中的武器
- 切换连接目标——Boss 进入不同阶段时改变连接的对象
- 设为 null 来”解锁”一端,让物体自由悬挂
节点信息
| 字段 | 值 |
|---|---|
| 节点 ID | constraintSetConnectedBody |
| 分类 | Cocos 组件 |
| 二级分类 | 3D物理 |
| 分组 | Constraint |
| 是否需要等待结果 | 否 |
| 是否需要先选择目标 | 否 |
输入引脚
| 引脚 ID | 名称 | 连接方式 | 值类型 | 用途 | 默认或选择 | 连接要求 |
|---|---|---|---|---|---|---|
exe | - | 执行流 | 执行流 | 执行入口 | - | 可选 |
constraint | 约束 | 数据 | cc.Component / Constraint | 目标约束组件 要操作的约束组件。 所有 3D 约束子类(FixedConstraint、HingeConstraint、PointToPointConstraint、ConfigurableConstraint)都可以接入这里的节点,用来读取或修改基类的公共属性——比如把约束另一端连接到哪个刚体上。 | - | 必填 |
connectedBody | 连接刚体 | 数据 | cc.Component / RigidBody | 连接刚体 要连到约束另一端的 RigidBody。不连线或传入 null = 固定在世界空间(合法操作,并非错误)。 | - | 可选 |
输出引脚
| 引脚 ID | 名称 | 连接方式 | 值类型 | 用途 | 默认或选择 | 连接要求 |
|---|---|---|---|---|---|---|
out | - | 执行流 | 执行流 | 执行完成 | - | 可选 |
constraint | 约束 | 数据 | cc.Component / Constraint | 目标约束组件 透传当前操作的约束组件,便于链式操作。 | - | 可选 |
使用场景
- 控制 UI、音频、动画、物理、灯光、粒子和渲染组件
- 读取组件状态后驱动游戏逻辑
- 批量设置组件属性完成游戏运行时效果
注意事项
- 适合的工作流类型:component、library、method、function、class。
- 目标组件引脚必须连接正确的组件实例。
- 设置类节点通常需要接入执行流,才会真正修改游戏运行时状态。
设置碰撞开关
设置碰撞开关:切换被约束连接的两个刚体之间是否发生碰撞。 设为 true = 两个物体会像真实的机械零件一样相互碰撞。设为 false(默认)= 它们互相穿过彼此,就像不存在一样。 常见用例:
- 打开:制作锁链的不同环节,每个铁环之间需要有物理碰撞
- 关闭(默认):大多数约束场景下,两个刚体之间不需要额外碰撞
节点信息
| 字段 | 值 |
|---|---|
| 节点 ID | constraintSetEnableCollision |
| 分类 | Cocos 组件 |
| 二级分类 | 3D物理 |
| 分组 | Constraint |
| 是否需要等待结果 | 否 |
| 是否需要先选择目标 | 否 |
输入引脚
| 引脚 ID | 名称 | 连接方式 | 值类型 | 用途 | 默认或选择 | 连接要求 |
|---|---|---|---|---|---|---|
exe | - | 执行流 | 执行流 | 执行入口 | - | 可选 |
constraint | 约束 | 数据 | cc.Component / Constraint | 目标约束组件 要操作的约束组件。 所有 3D 约束子类(FixedConstraint、HingeConstraint、PointToPointConstraint、ConfigurableConstraint)都可以接入这里的节点,用来读取或修改基类的公共属性——比如把约束另一端连接到哪个刚体上。 | - | 必填 |
enableCollision | 碰撞开关 | 数据 | boolean | 碰撞开关 true = 两个被约束连着的物体会互相碰撞(适合锁链等场景);false(默认)= 互相穿过。不影响与其他物体的碰撞。 | 开关 默认值:true | 必填 |
输出引脚
| 引脚 ID | 名称 | 连接方式 | 值类型 | 用途 | 默认或选择 | 连接要求 |
|---|---|---|---|---|---|---|
out | - | 执行流 | 执行流 | 执行完成 | - | 可选 |
constraint | 约束 | 数据 | cc.Component / Constraint | 目标约束组件 透传当前操作的约束组件,便于链式操作。 | - | 可选 |
使用场景
- 控制 UI、音频、动画、物理、灯光、粒子和渲染组件
- 读取组件状态后驱动游戏逻辑
- 批量设置组件属性完成游戏运行时效果
注意事项
- 适合的工作流类型:component、library、method、function、class。
- 目标组件引脚必须连接正确的组件实例。
- 设置类节点通常需要接入执行流,才会真正修改游戏运行时状态。
设置全部属性
批量修改约束的可写属性:在一个节点里同时设置连接刚体和碰撞开关。 默认两个输入引脚都是隐藏的,你需要手动把它们”公开”出来才能连接和赋值。未连接的属性保持原来的值不变。 适合在初始化关卡时一次性配置好约束的全部参数。
节点信息
| 字段 | 值 |
|---|---|
| 节点 ID | constraintSetProperties |
| 分类 | Cocos 组件 |
| 二级分类 | 3D物理 |
| 分组 | Constraint |
| 是否需要等待结果 | 否 |
| 是否需要先选择目标 | 否 |
输入引脚
| 引脚 ID | 名称 | 连接方式 | 值类型 | 用途 | 默认或选择 | 连接要求 |
|---|---|---|---|---|---|---|
exe | - | 执行流 | 执行流 | 执行入口 | - | 可选 |
constraint | 约束 | 数据 | cc.Component / Constraint | 目标约束组件 要操作的约束组件。 所有 3D 约束子类(FixedConstraint、HingeConstraint、PointToPointConstraint、ConfigurableConstraint)都可以接入这里的节点,用来读取或修改基类的公共属性——比如把约束另一端连接到哪个刚体上。 | - | 必填 |
connectedBody | 连接刚体 | 数据 | cc.Component / RigidBody | 连接刚体 要连到约束另一端的 RigidBody。不连线或传 null = 固定在世界空间。隐藏时保持原值不变。 | - | 可选 默认隐藏 |
enableCollision | 碰撞开关 | 数据 | boolean | 碰撞开关 true = 被约束连接的两物体会碰撞;false(默认)= 不碰撞。隐藏时保持原值不变。 | 开关 默认值:true | 可选 默认隐藏 |
输出引脚
| 引脚 ID | 名称 | 连接方式 | 值类型 | 用途 | 默认或选择 | 连接要求 |
|---|---|---|---|---|---|---|
out | - | 执行流 | 执行流 | 执行完成 | - | 可选 |
constraint | 约束 | 数据 | cc.Component / Constraint | 目标约束组件 透传当前操作的约束组件,便于链式操作。 | - | 可选 |
使用场景
- 控制 UI、音频、动画、物理、灯光、粒子和渲染组件
- 读取组件状态后驱动游戏逻辑
- 批量设置组件属性完成游戏运行时效果
注意事项
- 适合的工作流类型:component、library、method、function、class。
- 目标组件引脚必须连接正确的组件实例。
- 设置类节点通常需要接入执行流,才会真正修改游戏运行时状态。