最终实现的效果如下:

unity二进制spine unity 2d ik_unity二进制spine

教程时间:2021年12月29日

教程版本:Unity 2020.3

上一篇,我们已经完成了一个简约的人物持枪,但是,这样的效果和操作让我们无法接收的,所以,我们继续优化,我们今天将实现精细的手持武器

第一步,在PlayerPerfab 下,新建一个空物体:Rig_HandIK

1. 然后,在 Rig_HandIK 下,新建2个空物体:LeftHandIK 和 RIghtHandIK

unity二进制spine unity 2d ik_unity二进制spine_02

2.给 Rig_HandIK 添加组件: Rig

unity二进制spine unity 2d ik_vr_03

3. 给LeftHandIK 和 RIghtHandIK 添加组件:Two Bone IK Constraint

unity二进制spine unity 2d ik_vr_04


我们把人物的胳膊,小胳膊,手腕,赋给 Root,Mid,Tip(LeftHandIK RIghtHandIK 都需要,只不过是不同手而已)


unity二进制spine unity 2d ik_vr_05

拖入的骨骼位置

unity二进制spine unity 2d ik_vr_06

4.我们在WeaponHolder下新建2个空物体:RightHandIK 和 LeftHandIK

unity二进制spine unity 2d ik_vr_07

5.然后,我们将 WeaponHolder 下的 RightHandIK 拖入到 Rig_HandIK 下的RightHandIK 的 Two Bone IK组件的Source Object 的Target上

unity二进制spine unity 2d ik_游戏引擎_08

6.我们现在选中 WeaponHolder 下的 RightHandIK ,在视图窗口中,将坐标轴移动到右手应该握住的位置,再将 WeaponHolder 的LeftHandIK 的坐标移动到左右应该握住的位置
7.我们打开PlayerPerfab ,将 Rig_HandIK 拖入到Rig Layer上,运行

unity二进制spine unity 2d ik_unity二进制spine_09

第二步,开始精细优化

1.运行后,我们发现,手指手掌特别扭曲,这时候,我们通过旋转位移来调整手掌的握住方式,然后复制transform,停止运行游戏,粘贴transform即可

unity二进制spine unity 2d ik_unity_10


unity二进制spine unity 2d ik_unity二进制spine_11

此时,再次运行游戏,应该持枪效果就好很多了!

第三步, 绑定肩膀和武器的运动同步

很简单,给WeaponPose添加组件:Multi- Position-Constaint

unity二进制spine unity 2d ik_游戏引擎_12

再次运行游戏,肩膀和武器应该就同时运动了
如果你觉得枪的位置和真实情况有不同,可以调整 上图中的Settings上的Offset来设置,比如我的枪托进身体了,我就调整Z轴,让枪托出来一点

unity二进制spine unity 2d ik_unity二进制spine

接下来就是精彩的部分了

END