关节
该组件的属性较为晦涩难懂,在本节末尾将给出几个示例帮助理解。
注意
关节组件中用到的元件不能是链接类型的元件,且所有元件都必须拥有 物理物体
组件。
连接自身
- 类型:
bool
- 默认值:
true
注意
连接自身
设置为 true
时,请确保自身所在元件拥有 物理物体
组件。
物理物体 A
连接自身 = false
- 类型:
Item
- 默认值:空
关节连接的其中一个物理物体。
物理物体 B
- 类型:
Item
- 默认值:空
关节连接的另一个物理物体。
提示
物理物体 B
可以为空。为空时,关节仅对一个物理物体施加关节限制。
启用碰撞
- 类型:
bool
- 默认值:
false
是否仍然启用物理物体中的碰撞箱效果。若无特殊情况,请保持该值为 false
以保证移动、旋转通畅。
自动设置连接
- 类型:
bool
- 默认值:
true
关节连接点
用于设置两个物理物体之间的连接点。在场景中将会显示不同颜色球体的可视化位置。
相对位置
- 类型:
Float3
- 默认值:
(0, 0, 0)
相对轴向
- 类型:
Float3
- 默认值:
(1, 0, 0)
相对垂直轴向
- 类型:
Float3
- 默认值:
(0, 1, 0)
关节约束
用于设置两个物理物体之间的约束。可添加多个约束。
约束类型
- 类型:
线性 | 角
- 默认值:
线性
约束轴
- 类型:
Bool3
- 默认值:
(false, false, false)
范围
- 类型:
Float2
- 默认值:
(0, 0)
启用弹簧
- 类型:
bool
- 默认值:
false
启用弹簧后,允许物理物体的活动范围超出约束范围,且会在物理物体超出约束范围时施加弹簧力,超出范围越大弹簧力越大。未超出范围时无弹簧效果。
弹簧弹性
- 类型:
float
- 默认值:
0.0
弹簧阻尼
- 类型:
float
- 默认值:
0.0
示例
落石
提示
该例用于演示使用关节的完整流程,并利用 路面生成器
生成网格,不需要导入外部文件,适合起步练习。
制图请使用现成元件:素材 → 元件 → 机关 → 落石
。
- 创建落石
创建 → 路面生成器
- 设置
生成器类型
为拐角
- 设置物理物体属性
- 设置
碰撞箱类型
为长方体
,不改动碰撞箱相关参数 - 设置
物理体类型
为刚体
- 根据需要调整刚体相关参数
- 将物体摆放在合适的位置
- 设置
- 添加并设置关节
- 启用
关节
组件 - 设置 2 个约束
- 线性约束,锁定
x
z
两轴,确保物体只能沿y
轴移动 - 角约束,锁定
x
y
z
三轴,确保物体无法旋转 - 此时关节表现为平动关节(类似套筒,活塞等)
- 线性约束,锁定
- 不改动其它参数
- 启用
- 在游戏中测试,此时落石应当可以正常工作
推板
提示
该例用于演示需要建模后导入网格的情形。
制图请使用现成元件:素材 → 元件 → 机关 → 推板
。
- 建模
- 使用建模软件创建一个长方体
- 此处假设推板绕
x
轴旋转 - 参考尺寸:
x = 1m
y = 2m
z = 0.1m
- 此处假设推板绕
- 设定轴心位于底面中心
- 可在建模软件中使用旋转工具,绕
x
轴旋转测试是否符合预期 - 此处不考虑 UV 和材质匹配问题
- 使用建模软件创建一个长方体
- 添加并设置物体
- 导入上一步创建的网格
- 木板材质位于
素材 → 材质 → Utility → Wood
- 请自行完成其它步骤
- 添加并设置关节
- 添加 2 个约束
- 线性约束,锁定
x
y
z
三轴,确保物体无法移动 - 角约束,锁定
y
z
两轴,确保物体只能沿x
轴旋转 - 此时关节表现为平面转动关节(类似套环、铰链等)
- 线性约束,锁定
- 请自行完成其它步骤
- 添加 2 个约束
- 在游戏中测试
- 此时推板应当可以自由旋转
- 需要添加限位物体,并略微旋转使推板倾斜,使得推板位于正确的初始位置,并可正常工作
浮板
提示
该例新增了线性弹簧的使用。请利用这个例子练习各个操作!
制图请使用现成元件:素材 → 元件 → 机关 → 浮板
。
- 请自行建模导入网格和材质,也可使用现成的素材
- 保存
素材 → 元件 → 机关 → 浮板
的网格 - 设置 3 个材质
素材 → 材质 → Machinery → Machinery_Wood
素材 → 材质 → Machinery → Machinery_Target_Green
素材 → 材质 → Machinery → Machinery_Steel
- 保存
- 需要在
y
轴使用线性弹簧- 添加线性约束,限制
y
轴 - 勾选
使用线性弹簧
- 根据需要设置弹簧参数
- 参考:
弹簧频率 = 0.5
弹簧阻尼 = 0.25
- 参考:
- 添加线性约束,限制
- 请自行完成其它步骤
- 在游戏中测试