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/
Unity2D之让土豆人动起来的更多相关文章
- Unity2D Sprite Packer用法介绍
想充分利用图片空间? 我们用来做sprite的图片通常会留有很多空白的地方,我们在画完了sprite之后,这些地方很可能就没有什么作用了. 如果想避免这些资源上的浪费,我们可以把各个sprite做成图 ...
- "NHibernate.Exceptions.GenericADOException: could not load an entity" 解决方案
今天,测试一个项目的时候,抛出了这个莫名其妙的异常,然后就开始了一天的调试之旅... 花了很长时间,没有从代码找出任何问题... 那么到底哪里出问题呢? 根据下面那段长长的错误日志: -- ::, ...
- html和css
html css 和js说明 1.什么是html? HTML(HyperText MarkUp Language)超文本标记语言,通过使用标记来描述文档结构和表现形式的一种语言,由浏览器进行解析,然后 ...
- (DNS被劫持所导致的)QQ音乐与视频网页打开很慢的解决方法
这周开始发现一个很让人抓狂的现象,QQ音乐网页(http://y.qq.com)与QQ视频(http://v.qq.com/)网页打开超慢,甚至是无法打开,严重影响了业余的音乐视频生活. 以QQ视频为 ...
- 前端相关html和css
#请参考http://www.cnblogs.com/pycode/p/5792142.html #html css 和js说明 ##1.什么是html? HTML(HyperText MarkUp ...
- Java类WebServer及中间件拿webshell方法总结
0.序 原文名称:Tomcat.Weblogic.JBoss.GlassFish.Resin.Websphere弱口令及拿webshell方法总结 原文from:http://www.hack80.c ...
- WebBrowser内核指定
一.背景 这几天在维护公司的一个项目,嗯…到现在七八年没人动过了(也是老古董了),都说N年前的代码碰不得 处处是坑 不能挖坑还得一步一步的填坑,恰好今天就填了一坑 此处作为记录 供以后翻阅,对代码除了 ...
- [WPF]设置背景色
程序效果 最终得到程序的运行效果如图.拖动Slider可以使按钮的背景色出现相应变化. 需求分析和架构设计 如果是你,接到了这样的一个程序设计要求,会怎样思考?第一步当然是需求分析啦.这个程序相对简单 ...
- arpg网页游戏之地图(一)
[转]http://www.cnblogs.com/BlueWoods/p/4681572.html?from=timeline&isappinstalled=1 开发arpg网页游戏一项比较 ...
随机推荐
- atitit.mp4 视频文件多媒体格式结构详解
atitit.mp4 视频文件多媒体格式结构详解 1. 一.基本概念1 2. MP4文件概述2 3. mp4是由一个个“box”组成的,2 4. 典型简化mp43 5. Fragments5 6. r ...
- SharePoint 2013 - REST API about Content
1. 获取所有子站点信息(Sub Site): var subSitesInfo = "{0}/_api/Web/WebInfos?$orderby=Title desc"; // ...
- 我在用的mac软件(2)-终端环境之zsh和z(*nix都适用)
继续上篇介绍我的终端环境.这篇介绍zsh和z,其实这不局限于os x,在所有的*nix系统中都是可用的. zsh zsh作为bash的替代品,自然很多人要问:why zsh? 在Zsh Worksho ...
- Objective-C学习笔记---构造函数和析构函数
简单的讲,构造函数就是在创建一个对象的时候起到初始化的作用,对这个对象里的一些成员变量进行初始化,析构函数就是在对象被删除进行一些清理工作,也就是专门的扫尾工作,下面用代码来进行具体说明. 一.构造函 ...
- FileReader和FileWriter
FileReader和FileWriter 使用fileoutputstream类向文件写入数据与使用fileinputstream类从文件中将内容读取出来,存在不足,就是中文占两个字节, 搞不好就会 ...
- block的用法以及block和delegate的比较(转发)
看到一篇写的关于block和delegate放在一起来方便大家理解的文章,感觉不错,就推荐给大家来看一下. 代理设计模式对于iOS开发的人来说肯定很熟悉了,代理delegate就是委托另一个对象来帮忙 ...
- UVa 109 - SCUD Busters(凸包计算)
题目来源:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=3&pa ...
- Monyer.cn黑客小游戏
花了一天的时间,Monyer给大家带来了一个有趣的东东——拥有15个关卡的黑客小游戏. 入口http://monyer.com/game/game1 因为一直以来都是大家跟我一起学习网络技术嘛,所以这 ...
- 关于Javascript中的复制
在做项目时有一个需求,是需要复制内容到剪切板,因为有众多浏览器,所以要兼容性很重要 1.最简单的copy,只能在IE下使用 使用clipboardData方法 <script type=&quo ...
- 读书笔记——Windows核心编程(8)Interlocked系列函数
先让我们来复习下小学知识 A+B=C//式中A为被加数,B为加数. A-B=C//式中A为被减数,B为减数. 再让我们来明确一个知识点:返回值为void的Windows函数意味着一定会执行成功. -- ...