Unity学习之_Animator、Animation、动画状态机

动画分类
  • 普通动画
  • UGUI的按钮动画
  • 2D游戏的精灵动画
  • 人物角色的动画(人形/非人形)

理解 Animator、Animation、动画状态机之间的关系:Animation就是动画本身,比如跳、移动、变色、行走等等。动画状态机是用来控制Animation(动画)的播放的,他把动画通过我们设定好的方式组合起来,例如在行走的过程中变色,或者触发条件就跳等等。最后我们将设计好的动画状态机挂在到Animator上,Animator是挂在游戏对象上的。通过Animator在游戏对象上播放我们设计好的动画。
Unity学习之_Animator、Animation、动画状态机_第1张图片
Unity学习之_Animator、Animation、动画状态机_第2张图片

普通动画

创建普通动画的方式有很多种,ctrl+6打开Animatoin面板,选中需要添加动画的对象,点击create,就可以了,创建动画的同时,Unity会帮你创建一个动画状态机和在你选中的对象上挂在Animator。
在进行具体的动画设计时需要注意Animation面板有两种模式可以对动画进行修改:Dopesheet和Curves 他们分别是帧控制模式和曲线控制模式。Dopesheet模式通过关键帧(Key)控制物体的动画运动,在这里添加Key都更直观,Curves模式可以看到观察到Key与Key之间物体变化的模式,并且可以调整和修改,例如同样是从A点到B点的变化,为了实现先快后慢的效果我们可以通过修改曲线达到,而不用添加更多的Key来控制

Unity学习之_Animator、Animation、动画状态机_第3张图片

UGUI的按钮动画

Unity学习之_Animator、Animation、动画状态机_第4张图片
UGUI的按钮动画由四种模式:None、ColorTint(颜色)、SpriteSwap(精灵图片)、Animation(动画)
UGUI的按钮动画一共由四种状态分别是:Normal:正常状态,没有点击和选中时触发、Highlight:高亮状态,鼠标选中时触发、Pressed:点击状态,鼠标按下时触发、Disabled:禁用状态,取消Interactable勾选触发

2D游戏的精灵动画

2D游戏的精灵动画的创建方式和普通动画相同,只是对象换成了2D精灵图片。
并且2D游戏的精灵动画的创建有一个快捷方式就是在Project面板种同时选中多张2D精灵图片,然后将他们拖到Hierarchy面板中,Unity就会帮你用这几种精灵图片创建一个2D精灵动画。

人物角色的动画

角色动画和上面三种动画不太一样,因为角色动画需要角色模型,不论是人形的还是非人形的角色,都需要模型,所以在创建动画前需要先导入模型,导入模型需要注意的是:
1、有些模型是自带动画,而有些是分开的,如果是自带动画的就需要选中模型的预制体在Animation属性中对动画进行切割
Unity学习之_Animator、Animation、动画状态机_第5张图片
2、针对不同的模型,Animation Type 也需要进行修改:None用于没有动画的模型,Legacy 旧版本不支持动画状态机(Animator),Generic 所有类型的模型都可以用,Humanoid 只能用于人形模型动画,对人形模型动画的支持最好,并且可以使用动画重定向功能:及模型导入如果选择这种模式,那么其他所有使用Humanoid的模式导入的模型都可以使用一个任意一个Humanoid的动画,在Humanoid的模式下动画互相通用。
Unity学习之_Animator、Animation、动画状态机_第6张图片

其他

Blend Tree(混合树)
Blend Type:混合类型,和混合动画的参数个数有关,如果混合动画只有一个参数变量那么就是1D。如果由两参数变量就使用2D
Unity学习之_Animator、Animation、动画状态机_第7张图片
2D Simple Directional:当您的动作代表不同方向时最佳使用,例如“向前走”,“向后走”,“向左走”,“向右走”,或“向上瞄准”,“向下瞄准”,“向左瞄准” 简单的定向型不是在同一个方向上的多个动作,比如“向前走”和“跑了”。
2D Freedfrom Directional:当您的运动表示不同的方向时,也会使用此混合类型,但是您可以在同一方向上进行多个运动,例如“向前走”和“向前跑”。在自由形式方向类型中,运动集应始终包括位置(0,0)处的单个运动,例如“空闲(Idle)”。
2D Freedform Cartesian:当您的运动在同一个方向时最佳使用.使用Freeform Cartesian,您的X参数和Y参数可以表示不同的概念,例如角速度和线速度。一个例子就是“向前走头不转”,“向前跑头不转”,“向前走头向右看”,“向前跑头向右看”等动作。
Direct:直接让用户控制每个节点的权重,适用于面部表情和随机闲置(Idle)混合。

Avatar Mask(骨骼遮罩)
使用骨骼遮罩加多层动画来实现由两个或者多个动画在同一时间控制角色身体的不同部分

Unity学习之_Animator、Animation、动画状态机_第8张图片
Weight(权重):这一层动画的权重
Mask(遮罩):骨骼遮罩,通过遮罩让不同的动画层去控制不同的身体部位
Blending(混合模式):
1.override(覆盖/重新)当前层动画会覆盖/混合上面层的动画这里的比例看weight权重
2.Additive(附加的):附加的,不重写上面层的动画
(如果权重为1动画层的默认状态是空状态,那么本层将不会对上面的层产生影响)
IK Pass:是否启用IK动画

IK动画(反向动力学):让身体的左手/右手/左腿/右腿 的位置和我们自定义目标点位置保持一致

** Match Target (目标匹配)**:在动画的过程中可以对模型的局部或整体进行位置和角度的调整和修正(在某个时间点和某个位置和设置的保持一致),以使动画看起来更完美。例如下面这个跳跃的动画,为了让这个跳跃看起来更正式,我们需要在人物跳起来,并伸出支撑手的时候,确保手掌是按在墙面上的,这就需要用到Match Target
Unity学习之_Animator、Animation、动画状态机_第9张图片

            //目标匹配运算(目标位置            旋转                  匹配骨骼对象(左手)   匹配对象的重合度,位置=1代表位置完全一样,旋转=1代表旋转完全一样,(标准时间)开始匹配时间,(标准时间)结束匹配时间)
            animator.MatchTarget(matchTarget, Quaternion.identity, AvatarTarget.LeftHand, new MatchTargetWeightMask(Vector3.one, 0), 0.32f, 0.4f);

Timeline :Timeline可以理解精简版PR,只不过素材从视频换成了动画,Timeline 可以对动画进行改变位置,可以拉伸,复制、叠加、组合,等等一些列的操作,来做到电影级过场/镜头的效果。
这里我用Timeline做了一个赛车游戏的开始的过场赛车展示

这里就是对三个摄像机添加动画,然后用Timeline组合起来。

分享让知识变得有意义!后续会继续更新一些学习中问题。
OJMars
InTheMars

你可能感兴趣的:(unity学习,Animator,Animation,Unity)