Unity中飘逸的头发或飘带实现

在Unity开发中,有些角色我们要赋予TA更多的细节让衬托真实度,比如女孩的长发飘飘,或者丝带,旗帜,虽然我们可以用动画clip来呈现,也可以用Spring Joint和Configurable Joint来设置创建丝带,绳子之类,但是设置起来我觉得挺麻烦的.

找来找去,在一位日本的Unity开发者博客上找到了一组脚本,实现飘逸的长发或飘带还是挺好用的.

这是Webplayer案例:http://rocketjump.skr.jp/unity-spring-test/

这是测试案例,用了Unity二次元角色:
http://rocketjump.skr.jp/download/SpringTestScene.zip

这是只含必须的脚本包:http://rocketjump.skr.jp/download/SpringScript.zip.

具体用法可参考测试案例中,下面只简要说明可能会遇到的问题,首先要在飘起来的模型中让美术构建骨骼及蒙皮,如要动起来的这部分含有动画,那么可以在fbx导入设置中将这部分动画取消动画的导入,因为我们用脚本来处理,不使用动画.

在要参与飘动的每根骨头中创建一个空的子对象(empty gameobject),并将子对象移动到当前所属骨头的末端,之后再给参与运动的每根骨头挂上Spring Bone脚本,里面的Child指定刚才我们创建的子对象,Bone Axis来描述末端相对与骨骼坐标点的方向,如empty gameobject在骨骼坐标y轴负方向上,那么BoneAxis添”0,-1,0″,Radius只半径,这里用来生成碰撞体,仅支持球形碰撞体,Stiffness Force是硬度,数值大像钢筋,数字小像丝带,DragForce是力衰减,数值大,整个模型动起来约像丝带,数值小整个模型动起来像多节棍.具体可调整各值观察结果.
之后在我们这个模型的父级添加SpringManager脚本,并把所有添加了Spring Bone脚本对象都拖拽到SpringManager数组字段中.播放拖动模型起始骨骼就可以看到效果了.
如我们制作角色头发飘动效果,那么我们还希望头发与角色身体发生碰撞,避免头发穿透角色身体,这就要创建Gameobject并赋予SpringCollider脚本,可以看到绿色球形Gizmo,通过调整它的直径来改变碰撞球的范围,将它放置在想要阻挡头发穿透的地方,并将Spring Bone中指定需要产生碰撞的SpringCollider对象(勾选debug后播放可以看到黄色球型Gizmo).

大概就是这样了,还是要实践出真知.

参考文献:http://rocketjump.skr.jp/unity3d/109/

转载请注明来自1vr.cn By XK