Script Graph

使用指南

Cocos 组件 / 3D物理 / Constraint节点

Cocos 组件 / 3D物理 / Constraint 节点手册,包含 8 个节点的用途、引脚、使用场景和注意事项。

16

学习目标

访问 Cocos Creator 组件的属性、方法和事件,把引擎能力转成可视化工作流。

覆盖范围

  • 节点数量:8
  • 分类路径:Cocos 组件 / 3D物理 / Constraint

典型使用场景

  • 控制 UI、音频、动画、物理、灯光、粒子和渲染组件
  • 读取组件状态后驱动游戏逻辑
  • 批量设置组件属性完成游戏运行时效果

通用注意事项

  • 目标组件引脚必须连接正确的组件实例。
  • 设置类节点通常需要接入执行流,才会真正修改游戏运行时状态。
  • 部分组件能力受 Cocos Creator 版本限制,页面会标出版本字段。

节点索引

节点节点 ID输入/输出执行方式
获取附着刚体constraintGetAttachedBody1 / 1立即继续
获取连接刚体constraintGetConnectedBody1 / 1立即继续
获取碰撞开关constraintGetEnableCollision1 / 1立即继续
获取全部属性constraintGetProperties1 / 4立即继续
获取约束类型constraintGetType1 / 1立即继续
设置连接刚体constraintSetConnectedBody3 / 2立即继续
设置碰撞开关constraintSetEnableCollision3 / 2立即继续
设置全部属性constraintSetProperties4 / 2立即继续

获取附着刚体

获取附着刚体:返回当前约束所在节点上的 RigidBody 组件。 因为约束必须挂在一个有刚体的节点上才能起作用,所以这个值通常不会为空。 只读提示:这个属性只能读取不能修改。如果你想让约束连到不同的刚体上,应该操作另一个节点上的约束组件。

节点信息

字段
节点 IDconstraintGetAttachedBody
分类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,说明约束的另一端固定在世界空间里的某个位置——就像把一根绳子的一端钉在墙上,而墙上那一点就是”世界刚体”。这不是错误,是一种常见的用法。比如让一个物体悬挂在天花板上。

节点信息

字段
节点 IDconstraintGetConnectedBody
分类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),即使两个物体之间有约束连接,它们仍然会发生碰撞检测——适合做复杂机械结构的不同部件之间需要有真实的碰撞反馈。

节点信息

字段
节点 IDconstraintGetEnableCollision
分类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 的连接刚体表示约束一端固定在世界空间。

节点信息

字段
节点 IDconstraintGetProperties
分类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):可配置——自由度最高的关节,可以自定义各种约束规则 注意:这个值是构造时确定的只读常量,你不能在游戏运行时切换约束类型。想用不同的约束就得换组件。

节点信息

字段
节点 IDconstraintGetType
分类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 来”解锁”一端,让物体自由悬挂

节点信息

字段
节点 IDconstraintSetConnectedBody
分类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(默认)= 它们互相穿过彼此,就像不存在一样。 常见用例:

  • 打开:制作锁链的不同环节,每个铁环之间需要有物理碰撞
  • 关闭(默认):大多数约束场景下,两个刚体之间不需要额外碰撞

节点信息

字段
节点 IDconstraintSetEnableCollision
分类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。
  • 目标组件引脚必须连接正确的组件实例。
  • 设置类节点通常需要接入执行流,才会真正修改游戏运行时状态。

设置全部属性

批量修改约束的可写属性:在一个节点里同时设置连接刚体和碰撞开关。 默认两个输入引脚都是隐藏的,你需要手动把它们”公开”出来才能连接和赋值。未连接的属性保持原来的值不变。 适合在初始化关卡时一次性配置好约束的全部参数。

节点信息

字段
节点 IDconstraintSetProperties
分类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。
  • 目标组件引脚必须连接正确的组件实例。
  • 设置类节点通常需要接入执行流,才会真正修改游戏运行时状态。