Unity 骨骼动画 2D Animation 入门(1)

好记性不如烂笔头啊,还是记录一下!


Unity从2018版本开始引入不少2D的新功能,在资源包里加入很多新功能,一定要开启预览模式可以看到新功能,2D Animation2D IK2D Pixel Perfect2D SpriteShape等等。

屏幕快照 2019-07-28 下午3.07.13.png

这篇博客主要介绍的是2D Animation:


1. 安装 2D Animation

安装很简单点击install就可以安装了:

20180721134417352.png

我装的是最新的2.0.0-preview.3:

安装成功后有兴趣的同学可以直接看看unity的官方例子教程:
https://github.com/Unity-Technologies/2d-animation-v2-samples
需要unity 2018.3.x以上才能运行

插件的详细介绍,不过是英文版的:
https://docs.unity3d.com/Packages/[email protected]/manual/index.html


2. 创建骨骼

随意导入一张图片:

我用的碧蓝航线的标枪

804F0641-C4F3-45C5-A39C-B02553A25A9D.png

Sprite Mode选择Single:
然后点击Sprite Editor进入Sprite Editor

619F8EE8-8944-4C2C-BAE4-C4DF29C6EECD.png

选择Skinning Editor进入Skinning Editor,注意1.0.x叫Bone Edito
在编辑器右侧有一排按钮,依次为:

工具名 快捷键 用途
Preview Pose Shift + Q 预览模式,可以预览动作并不会真正的改变设置。
Edit Joints Shift + W 改变骨骼的位置,长度,方向,名称,层级等等,这些改变会影响使用者。
Create Bone Shift + E 创建骨骼
Split Bone Shift + R 把一个骨骼分成两根
Reparent Bone Shift + T 浏览骨骼的层次结构,可以在这里改变层级和名称。
Auto Geometry Shift + A 自动蒙皮,这个好用
Edit Geometry Shift + S 编辑蒙皮的点
Create Vertex Shift + D 创建新的顶点
Create Edge Shift + G 创建新的边
Split Edge Shift + H 用一个新的顶点分离一个边
Auto Weights Shift + Z 自动赋予权重
Weight Slider Shift + X 编辑顶点,边的权重
Weight Brush Shift + C 用画刷赋予权重
Bone Influence Shift + V 选择骨骼用到的Sprite

首先要使用Create BoneReparent Bone创建骨骼和设置骨骼层级,这里就不在说明具体的使用方法了,骨骼创建为应该为这个样子:

DA403A52-8D61-4780-AA8E-B4539CBCA2A0.png

创建骨骼时可以选中一个骨骼再进行创建,这样就能直接设置新的骨骼为选中骨骼的子骨骼


3. 骨骼蒙皮

蒙皮我的理解就是怎么让骨骼和他控制的部件绑定在一起,这样骨骼移动、旋转的时候,部件才能跟着骨骼运动, Unity 2D Animation这个工具蒙皮还是很好用的,在Auto Geometry这个工具里,调整参数,工具就会根据你调整的参数来进行自动蒙皮:

13AC6A82-C34B-4298-BD87-ABC741C4C389.png

如图所示,调整红框里的参数,然后点击Generate For Selected就可以

注意如果自动蒙皮是正确的,骨骼颜色会和部件颜色是一样的,也就是什么颜色的骨骼会控制什么颜色的区域

如果蒙皮的区域大小识别的和自己想的不一样可以使用Edit GeometryCreate Edge或者Create Vertex

  1. 如果只是调整大小使用Edit Geometry
  2. 如果觉得顶点数量不足使用Create Vertex
  3. 然后用Create Edge把顶点连接起来。

如果部分的区域蒙皮不是很好可以使用Weight Slider或者Weight Brush来进行调整,具体可以看下一节。


4. 设置权重

蒙皮表示的是骨骼影响区域,权重表示的是骨骼对区域的影响程度,在Weight Slider权重编辑工具中,点击一个顶点,可以看到这个顶点受到哪些骨骼的影响,举个例子:

040E0B1C-CD65-431D-921A-83E1DD12661B.png

比如上图这个区域,身体这个部件我加了两根骨骼,我们选中一个点,可以看到body这个紫色的骨骼对这个点的影响是0.5waist这个红色的骨骼对这个点的影响是0.5,什么意思呢?

我的理解是如果body这个骨骼有移动,旋转等操作的时候,这个点只会受到50%的影响,在具体点说就是如果body旋转90度,这个点只受到45度的影响

再来个直观的图方便大家理解,可以在Preview Pose预览模式中旋转这个部件看看效果:

屏幕快照 2019-07-28 下午9.23.08.png

这样赋予每个顶点不同的权重,就可以对身体产生不同程度的形变。


5. 组装角色

组装角色就比较简单了,主要先检查下骨骼的层级:


DA403A52-8D61-4780-AA8E-B4539CBCA2A0.png

也可以通过Preview Pose预览模式中旋转骨骼,检查预想的部件是不是跟着旋转了

59093479-7D8B-4C69-9A20-2F9498247601.png

如果层级没问题就可以保存下,点击右上角的Apply按钮。
然后我们就可以把这个Sprite拖到Unity的场景里了,然后会看到部件仍然是分布在各个地方的,接下来我们要做的是:

  1. 为这个GameObject添加一个Sprite Skin控件(这个控件只有安装了2D animation才会有)
  2. 点击控件下的Create Bones,会发现图片上的部件的骨骼就都会显示出来。
  3. 根据自己的喜好,组装角色吧

来一张自己完成组装的图:

屏幕快照 2019-07-28 下午9.45.41.png

以上说法只是我的个人理解,如有不对,欢迎留言指正。

你可能感兴趣的:(Unity 骨骼动画 2D Animation 入门(1))