在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);
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);
相关文章推荐
- 在unity中使用spine动画
- 骨骼动画 Spine的使用(With Cocos2d-x)
- Unity4.x新动画系统Mecanim使用
- Spine动画的使用
- spine之五——在程序中使用动画
- Unity使用Hotween动画插件遇到的坑
- 【Unity 3D 游戏引擎】使用 2DToolkit 插件 制作2D精灵动画
- 【Unity】整理新版动画使用
- 记录 Spine骨骼动画导入unity 步骤[unity3d 4.6.6版本 2d动画]
- 使用Spine软件为骨骼动画制作简单特效
- 在 unity 中使用三种简单的方式实现实时时钟动画
- Unity Spine Skeleton Animation 2D骨骼动画 For Game 介绍
- 在Unity3D中使用Spine2D的骨骼动画
- 使用spine骨骼动画制作的libgdx游戏
- spine基础以及骨骼动画的使用(1)
- unity 新的动画系统 Animator的使用(原)
- unity动画插件Hotween的使用 – unity3d游戏开发
- 使用spine骨骼动画制作的libgdx游戏
- 使用Unity新版动画系统Animator实现三连击
- Cocosd使用骨骼动画Spine