unity spine 进阶使用

在项目实践中,我们常常遇到收集金币,钻石等这样的特效需求,最初我们也是全靠代码实现,效果总是差点,偶然和我们动画师聊天确定了一种新的实现方案。

大概流程是动画师在spine软件中实现炸金币+飞金币的过程 输出文件给到程序,程序需要在代码中动态修改节点位置,来对齐飞金币的方向和位置。

配置:

unity+spine

1.动画文件导入unity

2.在hierarchy面板创建一个 spine-skeleton graphic,动画文件拖入到 skeletonData asset 处

unity spine 进阶使用_第1张图片

3.点击 add skeleton utility 按钮添加skeleton Utility

4.点击spawn hierarchy 这里选择override all

到这里,你就可以在hierarchy面板中看到节点下生成了对应的骨骼节点,名字与spines源文件中是一样的。

之后就需要我们在代码中找到

eg: transform.Find("SkeletonUtility-SkeletonRoot/root/JByidong1").position = spin_jbInitPos;

--------------------------------------------------------------------------------------------

之后又发现,如果直接一开始就改位置,很容易牵到其他节点,导致动画扭曲

解决方案:

动画在做spine时添加关键事件帧,然后程序在unity中添加userevent事件监听

eg:

goldSpinAni.GetComponent().AnimationState.Event += OnUserDefinedEvent;

public void OnUserDefinedEvent(Spine.TrackEntry trackEntry, Spine.Event e)
    {
            goldSpinAni.transform.Find("SkeletonUtility-SkeletonRoot/root/JByidong1").DOMove(goldImg.transform.position,0.3f);
    }

说明:这里为什么要用DoTween,其实不一定要用dotween,只是要有一个缓动的过程,如果是直接改变position,还是会有上文说到的问题。

希望能帮到大家!也是自己做一个笔记,哈哈哈

你可能感兴趣的:(Unity,spine,unity)