在Unity3D中使用Spine2D的骨骼动画

调研资料
Spine下载地址:
 

Unity3D的RunTime下载地址:

 
spine导入unity视频(翻墙观看):
 
spine的试用版是不能导出的,所以想要真正使用还是买个pro版。
1.png
 
 
一、界面介绍
打开Spine可以看上如上的界面,这里先简单介绍下界面,编辑软件的结构其实都大同小异。
①是菜单栏,其实菜单选项都隐藏在了Spine图标里,点击左上角图标可以打开下拉菜单。
2.jpg
②是动画预览窗口,注意左上角的小人是可以点的,是用于切换编辑骨骼和动作。在编辑骨骼的结构时,是用SETUP模式,而编辑动作时,用的Animate模式
3.png
 
③是工程结构界面,包括了骨骼树,资源文件夹等。
④是工具栏,可以对骨骼属性进行编辑。
⑤是动画编辑栏,可以在这对动画进行编辑,有时间轴,然后在上面打关键帧。
二、动画制作
1.新建工程并导入资源
使用①中的菜单创建一个新的工程,在③中的Images中导入所需的图片文件。
4.jpg
2.创建骨骼
在SETUP模式下,创建骨架。双击选项可以更改名字
5.jpg
3.蒙皮
现在只是一个骨架,还没有皮肤,骨架用于控制人物的动作,而皮肤依附于骨骼是跟随骨架运动的,决定人物的外观。所以我们需要把资源中的图片拖到骨骼底下。
6.jpg
这里在Stand底下有四张图,因为Spine同时支持序列帧动画。所以一些细节的东西可以使用序列帧动画来实现。
4.制作动画
点击②切换为Animate状态,在③中的Animations下可以创建一个新的动画。
7.jpg
点击Dopesheet可以隐藏/显示动画编辑界面。
编辑动作时,先要选择要调整位置的骷髅,然后点选AutoKey,在时间轴上选择时间点,并在Rotate,Translate,Scale三个属性框中上选择你想要改变的属性,
在后面的钥匙图标上点击,就会从绿色变成红色,表明要对其进行关键帧动画。
动画的制作和Flash以及3D的骨骼动画制作类似,如果需要深入学习,请参考其它软件,以我的美术水平,这边就不献丑了。
5.导出数据
8.jpg
导出的数据格式支持多种,这边是导出于Unity3D使用,所以选择了json格式,而且可以选择让Spine帮你打成图集。
 
三、在Unity3D中使用
1.导入RunTime的代码
想要在Unity中使用Spine,需要添加一些第三方的代码。我们可以在github上下到这样的代码。
 
下载的压缩包结构如下:
9.jpg
将spine-csharp拷贝到Unity中的Assets下并只保留src文件夹。
将spine-unity中的Assets中的两个文件夹拷贝到到Unity中的Assets下。
10.jpg
这样就可以在Unity中使用Spine的数据了~
 
2.导入资源
在Spine导出时,会生成以下三个文件,Unity中暂时只识别txt文件,所以需要在后面加个.txt的后缀名。
11.jpg
12.jpg
 
先要创建一个Material用于Spine的贴图。
接着创建一个Spine Atlas以及一个SpineSkeletonData用于配置Spine的动画信息。
13.jpg
14.jpg
 
 
最后完整的配置包括下面这些东西:
15.jpg
3.使用动画
在Unity3D的面板中创建一个Spine2D动画。
16.jpg
接着配置好动画数据以及设置好默认的动作,就可以看到屏幕中的Spine2D动画了。
17.jpg
 
四、最后结果
18.jpg test.gif
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Unity循环播放Spine动画的代码可以参考下面的示例代码: ``` using System.Collections; using System.Collections.Generic; using UnityEngine; using Spine.Unity; public class SpineAnimationController : MonoBehaviour { // Spine动画组件 public SkeletonAnimation skeletonAnimation; // Spine动画名称 public string animationName; // 是否循环播放 public bool loop = true; // Start is called before the first frame update void Start() { // 播放Spine动画 skeletonAnimation.AnimationState.SetAnimation(0, animationName, loop); } // Update is called once per frame void Update() { // 如果Spine动画播放结束,则重新播放 if (skeletonAnimation.AnimationState.GetCurrent(0).IsComplete) { skeletonAnimation.AnimationState.SetAnimation(0, animationName, loop); } } } ``` 在上面的示例代码,我们首先定义了一个SkeletonAnimation类型的变量skeletonAnimation,它是Spine动画组件,用于播放Spine动画。我们还定义了一个字符串类型的变量animationName,它是Spine动画的名称。我们还定义了一个布尔类型的变量loop,用于指定是否循环播放Spine动画。 在Start函数,我们调用了skeletonAnimation.AnimationState.SetAnimation函数来播放Spine动画。其,第一个参数0表示Spine动画的TrackIndex,第二个参数animationName表示要播放的Spine动画的名称,第三个参数loop表示是否循环播放Spine动画。 在Update函数,我们检查当前播放的Spine动画是否已经播放完毕,如果已经播放完毕,则重新播放Spine动画。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值