• Unity布料系统_Cloth组件(包含动态调用相关)


    Unity布料系统

    说明:

    unity自带的布料物理系统

    使用:

    1. 新建空物体;
    2. 添加cloth组件,unity会自动附带skinned mesh renderer组件;
    3. 将需要的网格和材质,赋值给skinned mesh renderer组件;
    4. 点击cloth组件的左上角的图标(Edit cloth constraints);
    5. scene面板中会出现布料参数调节面板(看不到的打开Gizmos,显示场景图标);
    6. 在模型上选中对应顶点(顶点过大或过小的话,调节Constraint Size的大小到合适的值);
    7. 根据需求对选中的点进行限制(例如:连接旗杆的那条边一般不会动,勾选Max Distance 值设置为0;让其不能移动);

    要点:

    1.布料系统目前只能和Capsule Collider 以及Sphere Collider 两种碰撞体交互;
    2.要将参与布料物理系统的物体的碰撞体拖入cloth组件的碰撞体组中;

    动态调用相关:

    问题:

    看布料的使用方式基本上就是不建议动态去使用,但其实动态去使用也是可行的。
    不过动态调用存在很多问题:

    1. 动态的给cloth组件添加碰撞体,虽然可以一直添加,但是超过一定数量时,多余的碰撞体并不能够产生物理效果。
    2. 在布料系统发生物理效果时,如果去改变(删除)碰撞体个数,物理效果会产生突变。在暂时无交互时改变是可行的。
    3. 添加到布料系统中的碰撞体,即使将物体隐藏掉,enable=false掉,依旧会产生物理效果,甚至于使用position=newpos来改变碰撞体的位置,newpos和当前路径之间经过布料系统,依旧能够发生物理效果。
      第三条的效果有些类似于character controller与刚体的一些特性,但布料貌似是将所有数据都放在布料系统里计算了。

    这就很坑,要解决第三条,就要把碰撞体从cloth中移除,要移除,就会碰到第二条的问题,需要保证cloth没有在交互中。

    因为是直接使用的,等回头看看官方文档再做修改。

  • 相关阅读:
    部署Kubernetes(k8s)时,为什么要关闭swap、selinux、firewall 防火墙?
    springboot整合支付宝沙箱支付
    Linux常见问题-获取Vsync信号
    在RISC-V64架构的CV1811C开发板上应用perf工具进行多线程程序性能分析及火焰图调试
    HC32L110(五) Ubuntu20.04 VSCode的Debug环境配置
    如何在小程序中实现页面之间的跳转
    Python 随机函数random详解
    Linux常用命令
    FastDFS文件上传原理和负载均衡方法
    java游戏制作-拼图游戏
  • 原文地址:https://blog.csdn.net/suixinger_lmh/article/details/125415459