Unity布料系统
说明:
unity自带的布料物理系统
使用:
- 新建空物体;
- 添加cloth组件,unity会自动附带skinned mesh renderer组件;
- 将需要的网格和材质,赋值给skinned mesh renderer组件;
- 点击cloth组件的左上角的图标(Edit cloth constraints);
- scene面板中会出现布料参数调节面板(看不到的打开Gizmos,显示场景图标);
- 在模型上选中对应顶点(顶点过大或过小的话,调节Constraint Size的大小到合适的值);
- 根据需求对选中的点进行限制(例如:连接旗杆的那条边一般不会动,勾选Max Distance 值设置为0;让其不能移动);
要点:
1.布料系统目前只能和Capsule Collider 以及Sphere Collider 两种碰撞体交互; 2.要将参与布料物理系统的物体的碰撞体拖入cloth组件的碰撞体组中;
动态调用相关:
问题:
看布料的使用方式基本上就是不建议动态去使用,但其实动态去使用也是可行的。 不过动态调用存在很多问题:
- 动态的给cloth组件添加碰撞体,虽然可以一直添加,但是超过一定数量时,多余的碰撞体并不能够产生物理效果。
- 在布料系统发生物理效果时,如果去改变(删除)碰撞体个数,物理效果会产生突变。在暂时无交互时改变是可行的。
- 添加到布料系统中的碰撞体,即使将物体隐藏掉,enable=false掉,依旧会产生物理效果,甚至于使用position=newpos来改变碰撞体的位置,newpos和当前路径之间经过布料系统,依旧能够发生物理效果。
第三条的效果有些类似于character controller与刚体的一些特性,但布料貌似是将所有数据都放在布料系统里计算了。
这就很坑,要解决第三条,就要把碰撞体从cloth中移除,要移除,就会碰到第二条的问题,需要保证cloth没有在交互中。
因为是直接使用的,等回头看看官方文档再做修改。
|