Unity 3D游戏开发Mecanim动画系统讲解

本期教程和大家分享Mecanim动画系统的重定向特性,Mecanim动画系统是Unity3D推出的全新的动画系统,具有重定向、可融合等诸多新特性,通过和美工人员的紧密合作,可以帮助程序设计人员快速地设计出角色动画。一起跟着人气博主秦元培学习吧!

博主今天想和大家分享的是Mecanim动画系统的重定向特性,众所周知,《仙剑奇侠传》是一部经典的RPG游戏,这部游戏到今天依然焕发着强大的生命力。博主在网上认识了一个制作《仙剑奇侠传》同人游戏的小团队,他们目前正在着手制作一个称为《仙剑奇侠传五外传:心愿》的同人游戏,该游戏基于Unity3D,由于技术上的一致性,博主向他们索取了一些游戏素材,而这成为了博主决心要研究Mecanim动画系统的一个主要原因。如图是《仙剑奇侠传五前传》中瑕的一个模型:

拿到这个模型的时候,博主发现这个模型的所有动画都是放在一个AnimationClip中的,所以博主果断将这个动画文件进行了分割,分割的方法是在资源目录中找到这个AnimationClip,然后在右侧的属性窗口中选择Animations选项卡中通过+号来新建一个AnmationClip,在指定了起点帧数和终点帧数后就实现对动画的分割。如图示博主经过分割后的动画文件列表:

可以看到这里博主将一个动画片段分割成了4个动画片段,这样我们就可以通过Animation组件来实现对动画的播放。而这正是在Mecanim动画系统推出之前Unity3D采用的动画控制形式。由于这个模型在建模的时候存在问题,所以导致瑕在游戏场景中的角度出现错误,博主只好自己用3D建模软件进行调整,结果意外得发现瑕的模型中是有骨骼的,博主忽然间想到了一个问题,是否可以利用Mecanim动画系统来为这个模型添加动画呢?答案是肯定的。由于这个模型在建模的时候将动画和模型一起创建了,因此我们需要首先将这个动画从模型中去除,因为Mecanim动画系统的一个主要思路就是让一套动画可以通过重定向应用到不同的模型上,既然有动画可用,那么模型自带的动画可以暂时去除。而让动画从模型中去除的方法很简单,就是在导出FBX模型的时候将嵌入的媒体选项不要勾选,这样我们的模型就可以和动画分离开了,经过这一步后,我们正式开始Mecanim动画系统的讲解。要理解Mecanim动画系统,首先需要了解这样几个概念:

一、Avater,即阿凡达,这是Mecanim动画系统中实现动画绑定的一个接口,该接口可以实现骨骼和肌肉系统的匹配,从而保证角色在执行动画的时候,角色能够按照预先设定的动画来运动。我们首先在项目资源窗口中找到了模型文件,如图:

我们注意到在右侧的属性窗口中有三个选项卡:Model、Rig、Animations。这里我们选择Rig选项卡,将Animation Type设为Humanoid,即双足类型的动画。这种类型可以支持大多数的类人形的模型。此外,Lagacy类型用来兼容Unity3D低版本中的模型动画,Generic类型是一种介于人形和非人形的模型之间的通用类型。我们选择Humanoid类型后,在下方选择生成Avater的类型诶Create Form This Model,即通过当前的模型来生成一个Avater。此时,Configure按钮由不可用状态变成可用状态,我们点击该按钮,如果我们没有保存游戏场景的话,此时Unity3D会提示我们保存场景,我们直接选择保存,接下来回打开一个新的场景,如图:

此时场景中会显示模型的骨骼结构,对应地,在右侧窗口中显示了该模型主要的身体结构,可以看到此时右侧窗口中所有的点都是以绿色显示的,这表示当前模型的骨骼关节和模型匹配正确。此时,我们可以切换到Muscles选项卡中,这是我们可以通过拖动滑块来检查模型匹配是否正确。在使用Avater的时候,有两点需要注意:

1、如果模型建模没有严重的错误的话,可以通过窗口底部的Mipping->AutoMap来实现对模型的自动匹配,这一点可以提高工作效率,但是作为一名有节操的开发人员,我们绝不能过度地依赖于这一功能。

2、当在手动调整模型匹配时,如果提示T-Pose错误,可以通过Pose->Enforce T-Pose来实现强制转化,博主最近才开始学习游戏建模,所以这里可能暂时无法解释清楚,大家就作为经验之谈来看吧。

确认模型匹配没有什么问题后,点击Done完成编辑。

二、AnimatorController:如果说Avater是将模型的身体和骨骼实现匹配的接口,那么AnimatorController就是讲动画和模型实现绑定的接口。我们这里创建一个XiaAnimaterController。双击该文件,会打开Animator窗口,如图:

博主这里不想详细介绍关于Unity3D动画系统中的状态机和混合树等概念,因为这些概念现在解释起来实在困难,博主打算放在下一篇文章中来详细的讲解Mecanim动画的状态机和混合树的概念。今天我们只是对Mecanim动画系统做一个初步的了解,因为要想彻底理解这个动画系统,绝非一朝一夕之功啊。博主在这里创建了6种动画状态,并通过带箭头的线条将它们连了起来。博主这里想实现什么功能呢?博主希望在一定条件下可以触发相应的条件,当出发结束后立即回到默认的状态,这里默认的状态是Idle。估计大家到这里会有点混乱,博主前面不是说这个模型没有动画的嘛,那么这个的动画是哪里来的呢?对此,博主这里做一下解释啊,博主在创建这个项目之前呢,提前准备了一个叫做WomanKnightAnimationPack的动画包,它提供了游戏中常用的动画,我们这里就是要通过Mecanim的重定向功能将这个动画运用到我们的模型上去,这个动画包可以从官方的资源商店中下载。好了,现在我们来讲解怎么讲动画和模型绑定,我们单击默认的Idle动画,在窗口右侧将会显示如下内容:

通过Motion文本框我们可以为当前的状态绑定一种动画,选中Foot IK和Mirror这两个选项,似乎可以解决角色在行走或者奔跑过程中出现的问题,可是博主在查API文档的时候并没有找到相关的解释,如果有朋友知道的话,希望可以告诉博主啊。类似地,我们可以为不同的状态绑定一个动画片段,可是问题马上又来了,我们如何按照游戏策划在适当地时候播放相应的动画呢?这就是动画的触发问题了,博主请大家想一想有限状态机的概念,如果不知道这个概念的,请自行了解,这是游戏设计中非常重要、非常有用的一个概念。我们知道在有限状态机中,无论我们使用switch-case结构还是if-else结构,都需要一个状态值来作为判断的依据,那么在Mecanim中这个原则依然适用。因为,Mecanim动画系统就是基于状态机的。好了,下面我们来创建一个状态值。如图,

在Mecanim动画系统中提供了四种类型的状态值,分别是Float、Int、Bool、Trigger,其中Trigger和OnTrigger()方法可以联用,实现触发式播放动画。好了,现在我们创建一个整型的状态值,默认值为0。我们首先选中Idle->Walk这条路线,在右侧的窗口中将参数设为ActionID,将值设为1,将方法设为Equals,其含义是当ActionID的取值为1时将执行Walk动画。同样地,我们将Walk->Idle这条路线选中,设将参数设为ActionID,将值设为0,将方法设为Equals,其含义是当ActionID的取值为1时将执行Idle动画。其余的动画状态参数和Walk设置方法相同,从Idle出发的线路依次为1,2,3,4,5,指向Idle的路线全部为0。现在我们将这个AnimatorController指定给场景中的模型,如图:

此时我们运行程序,由于我们已经为瑕指定了默认的动画,于是我们将看到:

虽然这个动画和我们的瑕妹子搭配得有点违和,但是我们已经初步掌握了使用Mecanim动画系统的方法,好了,下面我们来编写一段脚本来控制人物切换动画,因为只有默认动画是没有什么实际用途的:

最后我们一起来看实际的效果吧!

场景中的地形由Unity3D自带的地形工具创建,其实博主是想搭建一个《仙剑奇侠传五前传》中的云来石的场景,因为博主坚信,凭借瑾轩的智慧怎么会想不到在和瑕双双坠崖后召唤云来石呢,所以博主坚信他们俩都没有死,因为暮姐最后回眸的一瞬间表情是喜悦的,而背后传来了一急一慢两种脚步声,所以结局大家可以自己去想象啦。在同人游戏《仙剑奇侠传五后传:心愿》中他们策划的剧情和博主的基本一致,或许这就是《仙剑奇侠传》系列游戏之所以能让博主一直愿意乐观下去、努力下去的原因吧,我们都是普通人,可是我们并不是因为普通而普通,而是我们选择了不作为。以前博主听说过一款由仙剑玩家发起的游戏《仙剑奇侠传四:回到起点》,当时看到游戏的宣传动画时激动了好一阵子,可是到了后来这部游戏因为制作团队的解散而宣布停止,这似乎总让人想起上海软星的过去。细心的朋友一定发现了博主使用的素材是仙剑四中的模型,可以发现这个模型是较为简陋的,树木基本上是纸片拼成的,影子是在模型里创建的,当年弓长君带领上软制作仙剑三、仙剑三外传、仙剑四的艰难程度可窥一斑。不过目前由上软核心骨干组成的上海烛龙已经从当年的困境中走了出来,成为和大宇双剑抗衡的第三把剑。为何博主总是钟情于剑呢?因为剑的传说,直到永恒。

时间: 2024-10-14 20:20:10

Unity 3D游戏开发Mecanim动画系统讲解的相关文章

Unity 3D游戏开发引擎:最火的插件推荐

摘要:为了帮助使用Unity引擎的开发者制作更完美的游戏,我们精心挑选了十款Unity相关开发插件和工具.它们是:2D Toolkit.NGUI.Playmaker.EasyTouch & EasyJoystick.UnIDE.Tile Based Map and Nav.FX Maker.Toon shader.Top-Down Assets Mobile和83 Explosion Sound Effects. 作为当前最主流的3D游戏引擎之一,Unity拥有大量第三方插件和工具帮助开发者提升

【Unity】1.0 第1章 Unity—3D游戏开发和虚拟现实应用开发的首选

分类:Unity.C#.VS2015 创建日期:2016-03-23 一.简介 Unity是跨平台2D.3D游戏和虚拟现实高级应用程序的专业开发引擎,是由Unity Technologies公司研制的一个让玩家轻松创建诸如虚拟现实场景再现.三维视频游戏.建筑设计可视化.实时三维动画展现等类型互动内容的多平台综合型开发工具,是一个全面整合的跨平台专业3D开发引擎. 全球超过70%的手机3D游戏都是用Unity来开发的. 1.能部署到20多个平台上 Unity类似于Director,Blender

【Unity 3D 游戏开发】Unity3D 入门 - 工作区域介绍 与 入门示例

一. 工作区域详解 1. Scence视图 (场景设计面板) scence视图简介 : 展示创建的游戏对象, 可以对所有的游戏对象进行 移动, 操作 和 放置; -- 示例 : 创建一个球体, 控制摄像机, 让球体在摄像机拍摄的视图中显示出来; (1) 摄像机导航 摄像机旋转(Tumble) : alt + 鼠标左键, 摄像机会按照鼠标滚动的垂直中线进行旋转, 可以查看摄像机当前的状态, 注意只是改变视图中的状态, 摄像机还是在视图正中央位置, 摄像机的位置属性是不变的; 摄像机移动(Track

[Unity3D]Unity3D游戏开发之自己主动寻路与Mecanim动画系统的结合

大家好,欢迎大家关注我的博客,我是秦元培,我的博客地址是blog.csdn.net/qinyuanpei. 这段时间博主将大部分的精力都放在了研究官方演示样例项目上,主要是希望能够从中挖掘出有价值的东西分享给大家.这样博主和大家能够共同学习.好了,那么今天博主想和大家分享的是自己主动寻路与Mecanim动画系统结合起来实现的一个小案例,希望对大家学习Unity3D能够有所帮助. 博主以前告诉大家.博主是一个仙剑迷,平时学习编程累了的时候,博主就会玩玩仙剑.如图是博主偶尔回去玩玩的<新仙剑OL>

Unity3D游戏开发之Unity3D动画与Mecanim动画系统

Unity3D游戏开发之Unity3D动画与Mecanim动画系统 欢迎来到unity学习.unity培训.unity企业培训教育专区,这里有很多U3D资源.U3D培训视频.U3D教程.U3D常见问题.U3D项目源码,[狗刨学习网]unity极致学院,致力于打造业内unity3d培训.学习第一品牌. Mecanim是Unity新增的动画系统,其功能强大而灵活,让人类和非人类角色栩栩如生.Mecanim的重定向极大的提供了工作效率,而且占用极少CPU周期.使用从Unity资源商店找到的动画资源,或

【Unity】第10章 Mecanim动画系统

分类:Unity.C#.VS2015 创建日期:2016-05-02 一.简介 Unity提供了两种动画系统:一种是早期版本提供的旧版(Legacy)动画系统,旧版本(Legacy)以后将逐步被淘汰掉并在新版中不再支持.另一种是Mecanim动画系统,这是建议使用的新版动画系统. 如果你是初学者,就不要去学旧版(Legacy)动画了,直接学习Mecanim动画系统即可. 二.什么是Mecanim动画系统 Mecanim(肌肉线条)是Unity提供的新版动画系统,Unity计划将工作流完全并入Me

【Unity NGUI游戏开发之三】TweenPosition位移动画(二):相对于UIAnchor不同分辨率下的完美适配位移动画

Unity中的UI我们采用的是NGUI,NGUI的界面位移动画,我们一般使用的是TweenPosition. 一种是简单的相对位移,不考虑分辨率适配问题,只需要简单的从位置A到位置B,已经在文中介绍了: [Unity NGUI游戏开发之二]TweenPosition位移动画(一):不相对于Anchor的位移动画 另外一种是考虑到屏幕分辨率适配的位移动画,我们游戏中大多遇到的是这种情况. eg.我们想让一个UI从屏幕外沿着屏幕的左边移动到屏幕的中央,TweenPositon播放动画,在960*64

Unity3D游戏开发之动画模型导入

Unity3D游戏开发之动画模型导入 导入动画文件后,在工程(Porject)面板中选中,通过Inspector面板修改参数设置. 在项目视图中选中模型文件.如果想用旧版3.x的动画系统导入和编辑动画,请选择legacy选项.如果你有一个人性角色,比如,一个脑袋两条胳膊的两足动物,请选择Humanoid和'Create from this model',这样,一个完美匹配你角色骨骼关系的替身就可以被创建,或者你也可以选择其他预设好的替身. 如果你的角色不是人形物体,比如一个四足动物或者任何其它的

Unity3D之Mecanim动画系统学习笔记(一):认识Mecanim动画系统

Mecanim简介 Mecanim动画系统是Unity3D4.0开始引入的一套全新的动画系统,主要提供了下面4个方面的功能: 针对人形角色提供一套特殊的工作流. 动画重定向的能力,可以非常方便的把动画从一个角色模型应用到其他角色模型之上. 提供可视化的Animation编辑器,可以方便的创建和预览动画片段. 提供可视化的Animator编辑器,可以方便的管理多个动画切换的状态. 工作流 模型的准备 Unity不能制作3D模型和进行骨骼绑定,这些需要在专业的建模软件中由美术进行制作,一般常用的建模