Unity2D之让土豆人动起来
Unity2D功能
Unity3D最新的4.3版本,其中最大的新功能就是这个2D工具了。我这里简单介绍一下这个2D工具是怎样使用的。
首先,在我们创建项目的时候,面板上面多了一个2d和3d的选择,这两个选择有什么不一样的地方呢?
其实这个选项并不重要的,如果选择了2D项目,那么默认创建的摄像机就会变成了正交摄像机,而选择3D项目,默认摄像机会是透视摄像机。这个都是可以在项目里面自己修改的。
而在查看scene的选项里面,多了一个2D的选项,如果启用了,会强制变成2D的视图,如果取消了,会变成我们以前熟悉的3D的scene视图
让土豆人动起来
资源导入和设置
简单的介绍完2D项目选项之后,我们尝试着新建一个2D的项目,然后导入一张官方提供的土豆人图片进去项目里面:
注意看texture type,这里默认选择了就是sprite类型,然后在类型的下面,有一个sprite mode选项,其中默认是single单个图片的,我们将它改成Multiple多个图片的。
这时候,会多出一个sprite editor的按钮。这个sprite编辑窗口,也可以在window/Sprite Editor 菜单中打开。
进去了这个sprite编辑器,看到是这样的。如果你是从window窗口打开,而又没有设置Multiple,这里就算打开了也不能编辑的。必须设置Multiple。
切片Sprite身体骨骼
然后我们就可以直接的用鼠标(按住左键,拉选区域)画出我们想要的范围了:
比如我们先画出一只手的范围,然后会出现一个sprite的属性设置框,我们要做的事情,是给它一个方便管理的命名,然后调整好它的具体范围和中心点。我这里只是一个演示,所以就偷懒没有另外起名字了。
用同样的方法,把角色其余的部件全部画出来,命名好。最后记得要Apply应用一下,这样我们的sprite就生成好了。
土豆人切片骨骼预览
回去看看project窗口里面,会发现这张土豆人的图下面出现了我们刚才绘制的各个部件的sprite
搭建角色Pos
接下来我们尝试着把这些零散的部件组装成一个角色吧,新建一个空的对象(Ctrl+Shift+N),命名为BeanMan
然后把刚才绘制的身体部分拖动到空对象身上:
这时候场景里面就出现了身体的部分了。
Sprite排序
我们再把炮的部分拖进场景里面,但这时候我们会发现,我们本来是想炮在身体后面的,但现在炮把身体挡住了。有没有办法给这些2D的sprite做个排序呢?
排序的地方在这些sprite 的属性里面,有一个排序层的设置,还有一个层内排序的顺序。
我们可以先添加几个排序的层:
排序的方式是越下面的层会挡住上面的。比如这里,Layer2会挡住Layer1,而Layer1又会挡住Layer0。所以我们就可以根据这个角色有多少个大的层级关系,先分配几个层,用于大的排序,然后同一个层里面的排序我们用Order in Layer就可以了
土豆人骨骼预览
用同样的方法,我们把所有部件都拖到空对象上面作为子物体,然后用排序把它们排列好叠加关系。这时候一个土豆人就拼完整了。
给土豆人添加碰撞器
或许我们需要给游戏角色做一个碰撞范围,所以我们可以直接在空对象身上添加一个2D的物理碰撞检测器。
比如我这里给这个土豆人添加了一个box2d的碰撞器和一个circle2d的碰撞器,这样角色的身体刚好就在碰撞的范围内,能被打中的范围就限定在身体了。至于具体的碰撞检测怎样使用,可以去查看一下api的。
让土豆人动起来
有了角色,有了碰撞范围,我们的游戏角色还需要很重要的一个元素,就是动画了。
下面简单示范一下怎样给2D的角色添加动画,还有使用动画状态机
选择父级的空对象,然后打开 Window/Animation编辑面板:
在面板里面,有添加曲线的按钮,有开始编辑动画的按钮,这些操作和新的2D工具没太大关系,都是旧功能,如果不会用,请单独百度这一部分的用法。
点击动画面板的左上角+号,创建一个新的anim动画,比如Run 并保存
然后我们会发现,在project窗口里面会自动的把动画状态机的controller也一起创建了。
我们再创建多几个动画,比如站立、死亡、发射之类:
Meacanim状态机
然后我们点击进入controller,会发现,这些动画片段都已经默认的进入了控制器里面,我们就可以像以前使用Mecanim一样编辑这个2D角色的动画状态转换了。由于这个不是新功能,如果你不会使用Mecanim,可以查阅我以前写的MecAnim使用基础教程。
到这里,新的2D工具使用已经介绍完毕了。我又来说说我的看法。对于2D图片的操作,Unity一直都是弱项来的。就算这次添加了这个新的2D工具,其实也只是提供了一个底层的切割图片编辑器而已,不算什么特别有创新的功能了。论实际应用性来说,这个新功能在以前的版本绝对也能轻易的完全做出来,只是需要自己写编辑器而已了。所以我感觉意义没有想象中的大。而至于用来做UI,我感觉还是差了点,起码实用性比NGUI差了很多。如果你不介意重新写一整套的UI框架,那么你也可以拿这个2D工具来做底层用的。
我比较期待的,还是官方说了N久的新UI系统。还有,我比较期待Unity的官方能更大的开发一些图形绘制的底层功能,这样做自己扩展的功能时会更方便。
但是新版本的NGUI的确是越来越好用了
说明
本文写作内容基于Unity4.3.1版本,但Unity2D功能的核心思路仍适用于Unity4.3更高版本和Unity5.x
本文部分内容参考:http://liweizhaolili.blog.163.com/blog/static/162307442013101791453901/