Unity自动化碰撞体生成方法-Normal Collider 和 碰撞体代理

如何在Unity中对角色快速创建碰撞体(Normal Collider)和碰撞体代理(Fake Collider)

前言

快速给Humanoid人形角色添加碰撞体,使用Unity 的Collider系列,用来做物理检测,比如基于物理的动画系统,需要用自带的Collider做碰撞检测。有些使用条件我们需要自定义碰撞检测,比如格斗游戏需要自定义碰撞检测框体,我们就需要针对角色快速的创建碰撞框代理。

目前支持的功能

  • Unity Collider (内置碰撞体,胶囊碰撞体)
  • Fake Collider(Line-Sphere碰撞代理)

实现原理

使用Humanoid提供的Avatar识别人体骨骼,根据人形骨骼,在相应的骨骼节点创建碰撞体。

使用方法

Unity自动化碰撞体生成方法-Normal Collider 和 碰撞体代理

如何创建和调整

  1. 打开 FTP_Tools/ FTP - AutoWrapHumanBodyColliders菜单
  2. 选择碰撞体类型(Collider或者Fake Collider)
  3. 设置对象(内部检测是否是humanoid,同时检测avatar骨骼映射)
  4. Normal Type:点击Mapping Bone and Auto create collider
  5. Fake Collider Type:点击映射骨骼
  6. Fake Collider Type:点击重置,重置过后,进行初步的配置
  7. Fake Collider Type:设置完毕,点击Finish,进行细致的调节
  8. Fake Collider Type:根据人形骨骼选择对应的控制器调节
  9. Fake Collider Type:两点吸附或者分别调整,在场景中选择Handler进行移动位置
  10. 关闭窗口过后,需要再次调整,直接重新打开窗口,自动识别当前的碰撞框创建的类型

如何清空碰撞体

  1. 打开 FTP_Tools/FTP - ColliderTools
  2. 选择输入和输出
  3. 如果角色骨骼节点一致,直接通过名字映射查找,重新导入了fbx,骨骼层级和名字没变的情况下
  4. 骨骼节点不一致,直接通过avatar骨骼映射,修改了骨骼层级或者名字,可以通过avatar为参照依据进行拷贝
  5. 选择清空对象,点击两种类型的清空即可(Unity自带的collide只会情况和人形相关的骨骼碰撞体,不会清空误删其他的碰撞框)

效果截图

Unity自动化碰撞体生成方法-Normal Collider 和 碰撞体代理

源码地址

源码github地址https://github.com/tinyantstudio/AutoColliderSetUp

希望点星支持,谢谢~

改进计划

  1. 支持多种原生碰撞体
  2. 支持自定义类型的fake collider

总结

希望能够给需要的朋友带来一定的帮助,欢迎交流,有错误或者改进意见交流,可以在Github或者评论中指出。