(转) [教程] Unity3D中角色的动画脚本的编写(一)

ps: 这两天研究unity3d,对动画处理特别迷糊,不知FBX导入以后,接下来应该怎么操作,看到这篇文章,感觉非常好,讲解的很详细。 已有好些天没写什么了,今天想起来该写点东西了。这次我所介绍的内容主要是为了配合我前面所写的角色运动控制有关的文章,那就是动画。这是一个很复杂的概念,今天,我就把我所理解的有关动画方面的观点跟大家说说,不对的地方请大家指出,在下万分感谢。        老实说,我学Unity时,角色控制真的是一个难点,尤其是动画方面。想要在Unity中控制好一个角色且让这个角色的动作协调,不是一个简单的问题,需要我们深入理解其原理。只有这样,我们才有能力写一套精湛的角色控制脚本。Unity里面的动画系统相当复杂(也许是我的程度不够吧),我们不要期望自己不用将Unity动画系统的一些原理搞清楚就能够写出一套很棒的角色控制脚本,这是很愚蠢的。仅仅只是角色移动就播放跑步的动画,角色停下来就播放站立的动画,具有这种想法的程序员应该注意一下了。        那么怎么开始呢?我认为我们必须了解一些基本的概念。首先我们来了解一些基本的知识。首先是动画的导入。相信大部分读者在读本帖之前就已经对动画的导入有一定的了解了,这里我可能会从头开始讲解,因为个人程度不同嘛。一般角色动画是在三维软件中设计好了之后,再导入到unity3d中去的,且文件格式一般是*.FBX。Unity3D中导入角色动画的方式主要有两种,这两种方式分别如下:1.分割动画。美术在三维软件中对角色的动作设计完成之后将所有动画集中在一个FBX文件上。我们只需知道其制作的动画片段的个数与其对应的帧数就可以对存储在这个FBX文件上的动画进行准确的分割。详细过程官方文档上写的很清楚,我们只需要按部就班的执行就行。但是要注意一点,我们可以在分割动画的时候会遇到这样一个选项:WrapMode,图如下: 这个WrapMode(循环模式)很重要,默认状态下系统选择的是Default,你可以调节其为其他选项,比如Loop。我们也可以利用脚本来动态的操作它。关于其用法,我们会在后面的代码中得以体现。 2.多重动画文件。这是一个很方便的动画导入方法。在项目中,美术有可能将动画数据与模型分开制成FBX文件,那么此时我们只需找到动画的FBX模型,对它们以一个通用的方式命名即可。即”模型名@动画名”,例如一个模型的名字叫做gam,并且这个模型有一个名为“idle”的动画的FBX文件,那么我们可以将这个FBX模型的名字命名为:“gam@idle”。需要注意的是这个根模型中的各个动画的循环模式是Default,而且在Inspector面板中无法修改,只能在脚本中修改,有点坑吧。而且方式二中的文件占用大小对于方式一来说确实增大不少,这对于移动设备类游戏来说确实是一件必须斟酌的事情。望读者务必注意一下。 了解完这些之后,我们该重点的谈一谈Unity里面的与动画相关的API了,重点有以下三个:Animation,AnimationClip,AnimationState。这次我们先看一下Animation这个类,我估计这次还讲不完,如果是这样,那我就尽量讲得多一点吧。 Animation,官方是这样介绍的:The animaiton component is used play back animations.翻译过来就是:动画租金按是被用来播放动画集合的。说到这里,谈到了组件,对没错,这个类对应的就是我们的Animation组件。我们将Project面板下的任何一个FBX模型拖拽到Hierarchy面板中,你会在其对应的Inspector面板中发现其被自动添加了一个Animation组件,只不过其动画片段的数量默认为0。你可以调节这个动画的Size,然后从Project面板中找到相应的动画片段,此动画片段截图如下:…

unity常用插件

Unity3D常用插件,网址:http://jingyan.baidu.com/article/7f766daf4ef2844100e1d079.html ,想想自己也有小半年unity经验了,于是整理了一下自己用过的插件并附上下载地址。1. NGUI,这个不用多说,上官网:http://www.tasharen.com/?page_id=140,也可以去我的百度云盘:http://pan.baidu.com/s/1qWwSwFE2. FingerGestures,顾名思义,这个是支持移动设备所有触摸事件的插件,包括点击,滑动,还有自定义手势等等,云盘:http://pan.baidu.com/s/1mgDp5Gk3. EasyTouch,也是用于移动平台上的RPG类的游戏,这里有篇文章,简单介绍了一下该插件http://my.oschina.net/dingxiaowei/blog/205231,下载地址:http://pan.baidu.com/s/1o6xC0Z44. ShareSDK,功能强大的分享插件,支持一键分享并且配置起来十分简单,目前绝大多数的社交软件都支持,并且他们官方的文档写得特别清楚而且如果注册用户的话,还会有技术支持,官方文档:http://wiki.mob.com/Unity3D快速集成指南/ 下载地址:http://pan.baidu.com/s/1Coc8I5. AndroidRemote,这个主要用于安卓平台和电脑联调,省去了每次测试都要重新打包的麻烦,下载地址:http://pan.baidu.com/s/1bndGfwj6. NGUI_HUD_Text,这个用于游戏里血条的变化,下载地址:http://pan.baidu.com/s/1jGmpsge7. 2dToolKit,是一款2D开发组件,它具有很强的灵活性,可以让开发者在Unity中进行2D开发,下载地址:http://pan.baidu.com/s/1mgsWNA4、8. PlayerMaker,是一个可视化脚本工具,开发者可以使用它很快的完成游戏原型制作,能够大大的提高开发效率,让你的游戏更加完美,下载地址:http://pan.baidu.com/s/1jGL1jCi9. PathologicalGames,用于绝大多数的曲线操作,下载地址:http://pan.baidu.com/s/1bn8iowv10. FxMaker,侧重于unity里的粒子特效系统,这款插件提供了众多特效资源和效果预览,玩家可以随意组装效果并最终合成一个预设自己使用,下载地址:http://pan.baidu.com/s/1bndagvt11. Magical FX,魔法特效包,下载地址:http://pan.baidu.com/s/1vtc8e12. water.unitypackage,这是一款用于水的插件,性能还比较高,用于移动设备也没问题,弥补了专业版的unity水特效资源在移动设备卡机的不足,下载地址:http://pan.baidu.com/s/1gdxQGrp13. LitJson,看名字就知道,这是用于Json操作的一些API,下载地址:http://pan.baidu.com/s/1gdzS9H514. icsharpcode-SharpZipLib,用于解压缩, ZipLib组件与.net自带的Copression比较,在压缩方面更胜一筹,经过BZip2压缩要小很多,而且这个功能更加强大。使用方法:http://blog.csdn.net/wjbaiverson/article/details/6226160,下载地址:http://pan.baidu.com/s/1dDF5JKt15.…

unity——各种坐标理解

本人学生一枚,刚接触Unity3D,若有理解得不对的地方,还望各路大神不吝赐教~ unity中的坐标系统包括世界坐标(World Space),屏幕坐标(Screen Space),视口坐标(View Space)以及GUI坐标系统。 世界坐标(World Space) 场景中添加的对象,它们是以世界坐标显示在场景中,可以通过代码transform.position获得该对象的世界坐标,那么我们在检视面板(Inspector)中看到的Position的值在对象没有父物体时,这个值和transform.position得到的结果一致的,若该对象有父物体,那么检视面板中(Inspector)看到的即为相对于父物体的相对坐标位置,这样通过transform.position得到的值自然就不一样了。总之,通过transform.position得到的都是对象的世界坐标。在对象存在父物体的情况下,若想要得到该对象在检视面板(Inspector)中的值,可以通过transform.Localposition得到。   屏幕坐标(Screen Space) 屏幕坐标是通过像素来定义的,屏幕坐标的坐标系以屏幕左下角为(0,0)点,右上角为(Screen.width,Screen.height),屏幕坐标为3维坐标,z的大小由相机的世界位置来定义。通过Input.mousePosition得到的是屏幕坐标,屏幕坐标的数值只与屏幕的大小有关,跟分辨率没有关系。  视口坐标(View Space) 视口坐标标准化后的屏幕坐标,它的坐标原点同样是左下角为(0,0)点,只不过右上角为(1,1)点,若对象处在场景的正中间,则对象的视口坐标为(0.5,0.5),与屏幕坐标一样,视口坐标也是一个3维的,它的z方向的数值由相机的世界位置来决定。 GUI坐标系 GUI坐标系主要在通过OnGUI方法绘制屏幕UI界面时运用较多,GUI坐标系是一个2维坐标系,与屏幕空间类似,所表示的范围也是整个屏幕空间范围,只不过GUI坐标的坐标原点在左上角,即左上角为(0,0)点,右下角为(Screen.width,Screen.height)。  …

关于用Max导出Unity3D使用的FBX文件流程注解

原地址:http://hi.baidu.com/phpstyle/item/c167a4c0694670b10d0a7b87 关于用Max导出Unity3D使用的FBX文件流程注解(转载) (2011-08-31 00:01:55)标签: unity3d 游戏 u3d基础分类: unity3d(转载)基础应用技术 从max导出FBX到Unity,以下环节需要特别注意。1,单位设置   很多人在建模,动画的时候,默认的max system unit是设置的inch,建议修改成metres或者centimetres,否则导出的模型和动画可能比例不一致; 2,导出物   在导出模型和动画时,建议选择的导出模式,是根据你要导出模型或者动画,使用export selected模式导出,即,只导出选中的对象。 3,动画中必须有模型 在使用export selected导出动画时,要全选你要导出的全部骨骼,包括Bipe,和Bone,以及他们的Nub。然后选中任何1个模型,一起导出;FBX不允许没有模型的动画单独存在; 4,可能丢失蒙皮信息的原因1 在使用export selected导出模型时,要选中你要导出的模型,以及全选所有的骨骼,才会有蒙皮信息。查看导出的FBX有没有蒙皮信息,可以把FBX文件拖到Unity里,看Mesh上面有没有一个参数叫做skined mesh material,如果没有,则是你没有选中骨骼就导出了,因此没有蒙皮信息。 5,可能丢失蒙皮信息的原因2 在导出有蒙皮信息的模型文件成FBX时,一定要给每一个模型或者sub…