在Unity中使⽤spine动画
可以使⽤spine制作⾻骼动画来给unity使⽤。spine提供了unity运⾏包。运⾏包的版本⼀定要和spine版本⼀致,不然会报错。
导⼊spine动画:
由spine导出的动画⽂件有3个:xx.atlas,xx.json,xx.png。将这三个⽂件直接导⼊unity会报错,将xx.atlas改为,这时会⾃动⽣成xx_Atlas.asset,xx_Material.mat。然后在unity⾥⾯create spine SkeletonData,指定xx_Atlas.asset和xx.json。就可以⽤SkeletonData⽣成动画了。
// 教程
//1.导出动画
unity3d animation导出动画.png
// 2.设置 .txt⽂件
设置 .txt⽂件 .png
// 3.导出⽂件到Unity中使⽤
成功导出⽂件.png
控制动画播放:
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);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论