您的位置:首页 > 移动开发 > Unity3D

在unity中使用spine动画

2017-01-17 12:01 573 查看
原文地址:
https://my.oschina.net/yizhangxyz/blog/717611
可以使用spine制作骨骼动画来给unity使用。spine提供了unity运行包。运行包的版本一定要和spine版本一致,不然会报错。

导入spine动画:

由spine导出的动画文件有3个:xx.atlas,xx.json,xx.png。将这三个文件直接导入unity会报错,将xx.atlas改为xx.atlas.txt,这时会自动生成xx_Atlas.asset,xx_Material.mat。然后在unity里面create spine SkeletonData,指定xx_Atlas.asset和xx.json。就可以用SkeletonData生成动画了。

控制动画播放:

SkeletonAnimation skeletonAnimation;   //gameobject的component。

Spine.AnimationState spineAnimationState = skeletonAnimation.state;

Spine.Skeleton skeleton;

spineAnimationState.SetAnimation(0, animationName, true);

切换动画的bug:

由于spine在切换动画的时候自动补偿,用于动画的平稳过度。但是会导致残影等bug,这时候需要在SetAnimation前调用

skeletonAnimation.skeleton.SetToSetupPose ();

spineAnimationState.ClearTracks ();

来消除前一个动画的影响。

添加事件:

skeletonAnimation.state.Start:开始播放

skeletonAnimation.state.End:动画被清除或者中断

skeletonAnimation.state.Interrupt:动画被打断

skeletonAnimation.state.Complete:播放结束

skeletonAnimation.state.Event:用户自定义事件

事件设置采用lambda表达式:

skeletonAnimation.state.Complete += (state, trackIndex,loopCount) => {

            Debug.log("");

        };

动态获取slot的坐标:

Vector3 pos = skeletonAnimation.skeleton.FindSlot("hat_1").Bone.GetWorldPosition(transform);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息