unity的ragdoll提供了可视化生成界面,在骨骼上生成collider,Rigibody,characterjoint后,对Rigibody施力AddForce即可实现Ragdoll

这一部分,网上已经有了很多案例,不再累述,重点说下我遇到的坑。

坑一:怪物落地后整体不动,但是部分关节莫名抖动不止

出现情况:几乎必现,主要表现在手脚关节。

原因及解决方案:曾经怀疑是碰撞或者阻力太小原因,最后仅仅设置骨骼collider与地形或阻挡层物理碰撞,互相不碰撞,问题依然存在。阻力也做设置,问题依然存在。最后采取方案是当关节Rigibody速度小于某值(0.01),就将Rigibody.iskinematic置true,让物理无效,抖动自然就没有了。

坑二:蒙皮拉伸 变长,完全不成形

出现情况:不必现,同一模型反复多次使用后有几率出现,可一旦出现后,则为必现。

原因及解决方案:主要反复用一个模型,其characterjoint上的connectedanchor 连接锚点坐标会不断修改,最后就会导致模型蒙皮越来越奇怪,直至拉扯变形。只要将 connectedanchor 坐标置原即可,另外需要注意的是autoconnected选项应该不勾选,或用代码置false,因为会影响连接链接锚点改变值