在项目实践中,我们常常遇到收集金币,钻石等这样的特效需求,最初我们也是全靠代码实现,效果总是差点,偶然和我们动画师聊天确定了一种新的实现方案。
大概流程是动画师在spine软件中实现炸金币+飞金币的过程 输出文件给到程序,程序需要在代码中动态修改节点位置,来对齐飞金币的方向和位置。
配置:
unity+spine
1.动画文件导入unity
2.在hierarchy面板创建一个 spine-skeleton graphic,动画文件拖入到 skeletonData asset 处
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
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,还是会有上文说到的问题。
希望能帮到大家!也是自己做一个笔记,哈哈哈