Unity动画系统知识点简单介绍(简易)

本文是学习文,其中转载某些文章,如有侵权,联系删除。
学习要点:

1.动画的分类
游戏物体的基础动画设置,UGUI设置的按钮状态,2D游戏Sprite动画,Root Motion设置 人物模型动画设置

1.1:UGUI的按钮动画:

Transition:控制按钮的效果。
Node:没有过渡效果

Color Tint:颜色过渡效果,使用颜色来调整效果

Sprite Swap:图片过渡效果,使用Sprite精灵来制作按钮效果

Animation:动画效果

选择Animation,然后像普通动画设置一样为Button的四种状态设置动画,Normal.Hightllight,Pressed ,Disable.

2…动画组件
Animation:

Samples:帧数,设置动画在一秒钟之内播放的帧数,数值越大,动画的播放速度越快,反之越小
Add Property ; 属性,添加动画属性值
时间刻度:0代表秒数,25代表帧数
六个按钮依次的效果:预览动画组件,录制动画。
                跳转到开始帧,跳转到上一关键帧,播放动画,跳转到一个关键帧,跳转到最后一帧
0代表的是当前的帧数

影响动画的三方向的位置,修改的位置是同步进行的

可以为游戏物体的三个组件进行动画制作

在Animation组件的底部有两个属性值,一个属Dopesheet(摄影表),另一个是Curves(曲线),两种不同制作动画的方式
Dopesheet: 摄影表是通过断点来设置动画属性。
Curves : 调整曲线的变化来修改动画的基准值。

2.模型知识点
常见的模型格式:.fbx(FilmBox软件), .max(3Dmax), .maya(玛雅软件)
常见的贴图格式:.Tga(Tagged Graphics)
常见材质格式:.mat(mat格式是max的材质库的格式,可以通过材质编辑器打开)。
对于新版本的Unity 导入模型导致贴图丢失的问题,模型本身的材质球可能无法修改,我们可以修改源材质球的贴图,
然后重新导入到模型当中,在下图中的位置重新为模型导入材质球

3.模型的的三种动画导入设置

Aniamtion Type: 模型动画的三种类型

 None:   将模型设置为没有动画Leacy:   将模型设置一般模式,在该状态下,模型本身只能使用Animation组件来播放动画,无法通过动画状态机来控制动画Geneic:  将模型动画设置为通用模式,在该状态下的模型可以通过动画状态机来控制动画,在该状态下,无法通过动画来改变模型的运动Humanoid: 将模型动画设置为人形状态,若多个模型使用的是同一套人形骨骼,那么模型之间的动画是可以通用的,并且,在该状态下,可以通过动画来修改人物的运动。(可以使用动画的重定向)

3.骨骼映射,Avatar的创建 在模型动画类型中选择 Humanoid 类型,然后点击Configure,实现模型骨骼的映射


绿色代表的是必须的骨骼节点,灰色代表的是不必要的骨骼节点

Loop match :代表的是循环动画头尾的匹配程度,绿色代表匹配程度良好,黄色代表需要头尾匹配不佳,红色代表不匹配
Bake Into Pose :模型在播放动画时,可能会影响到模型本身的Rotation, 勾选这个可以将模型的动作对角度的影响烘焙到模型
        本身身上,就不会对模型的角度产生影响。
动画重定向:
“重定向就是把A角色做的动画用到B角色上。如果A和B两个角色的骨骼结构完全一样,那动画可以直接重用。但是如果A和B的骨骼结构不一样,但是是Humanoid类型的,可以使用Unity中的Retargeting系统.
PS :具体内容可以参照:Root Motion

3.Animatior 类
StringToHash把参数字符串转换成ID:设置动画的时候,Animator.setFloat(“Speed”,1)
我们可以先把动画参数字符串转化为ID值

public float AniimatorID = Animator.StringToHash("Speed");  //将动画字符串转化为ID值

AnimationClip an = ani.runtimeAnimatorController.animationClips[0];
//获取该animator的所有的clips,后边的下标可以获取指定索引值的clip,

下标是根据加入的前后顺序 去判断的,这个是不区分层级,不区分动画的状态
animator.GetCurrentAnimatorClipInfo(0);

//参数是表示层级,获取当前层级播放的动画,返回一个数组,
只有在获取到的是blendtree的时候数组长度才会是>1的(blendtree中正在播放的动画有几个这个长度就是几)

ani.GetCurrentAnimatorStateInfo(0);
//参数是表示层级,返回的当前层级正在播放的动画的状态机

Animator.MatchTarget(Vector3 matchPosition, Quaternion matchRotation, AvatarTarget targetBodyPart, MatchTargetWeightMask weightMask, float startNormalizedTime);
方法详解: MatchTarget

4.Avatar Mask:骨骼遮罩:
常用于动画混合
当只希望动画只影响人物模型特定位置的时候就要使用骨骼遮罩,减少动画对其他骨骼关节的影响
首先我们先了解,动画骨骼遮罩常用的地方.

Weight : 代表某个动画层的权重,权重为0,该层动画不对模型产生影响,权重为1时,将产生最大(100%)影响。
Mask: 动画遮罩,骨骼遮罩。
Blending,该层动画与其他层动画的混合方式,包括Override(复写方式,即取不同层动画的中间值)和additive(直接叠加)。
Sync,同步。同步是本层动画直接同步其他层动画状态之间的逻辑状态,一般需要选取同步源。同步之后需要给本层的动画状态添加动画剪辑。
IK Pass即本层动画是否支持IK动画,设计IK动画必须勾选该选项
在Asset下创建一个文件夹,在文件夹下创建一个骨骼遮罩

PS:骨骼遮罩的详情:骨骼遮罩

5.IK动画
Ik:动画详解

6.TimeLine动画:
TimeLine动画1
TimeLine动画 2
TimeLine动画 3
PS:当人物模型动画对TimeLine位置产生影响时,人物模型初始的播放位置在初始位Vector3(0,0,0);
可以给人物模型添加一个骨骼去控制动画,从而让Timeline不对模型的位移产生影响。

Unity动画系统简单介绍相关推荐

  1. [Unity存档系统]简单介绍Unity常见存档系统二JSON以及使用方法

    学习目标: 如果你和我同样苦恼于游戏相关的数据怎么存储与读取,那么不妨看看这个up主有关Unity存档系统的教程.[Unity] 存档系统 Part 1 | PlayerPrefs | Unity初学 ...

  2. Unity动画系统常用知识总结

    Unity动画系统常用知识总结 资源导入需要注意的地方 常用的组件 Animator 组件 Avatar Mask 骨骼遮罩 Animator Controller 动画切换 Any State Ha ...

  3. Unity动画系统详解10:子状态机是什么?

    摘要:除了使用Layer还有没有更好的组织状态的方式呢?感觉一个Layer里面状态多的时候,还是很显得很乱. 洪流学堂,让你快人几步.你好,我是跟着大智学Unity的萌新,我叫小新,这是复(yu)习( ...

  4. Unity动画系统详解5:BlendTree混合树是什么?

    摘要:"Animator中有一个功能,用来解决多个动画之间的混合,经常用于移动动画之间的混合,这个功能叫做BlendTree,混合树." 洪流学堂,让你快人几步.你好,我是跟着大智 ...

  5. Android 系统简单介绍

    Android 系统简单介绍 2011年11月20日 写这篇文章的目的是为了给那些刚刚入手安 卓手机的新手们一些参考,希望他们能快速的上手 [第一期]ANDROID基础知识1~20 [第二期]继续泡! ...

  6. Unity动画系统学习

    Unity动画系统学习 文章目录 Unity动画系统学习 AnimationState 动画状态 Animation Transitions 动画过渡 动画分层和遮罩 动画混合 1D混合 2D混合 动 ...

  7. Unity动画系统详解4:如何用代码控制动画?

    摘要:通过上一篇咱们知道了播放动画需要使用Animator,那么如何用代码控制动画呢? 洪流学堂,让你快人几步.你好,我是跟着大智学Unity的萌新,我叫小新,这几周一起来复(yu)习(xi)动画系统 ...

  8. Unity动画系统详解8:IK是什么?

    摘要:IK是Inverse Kinematic的缩写,也就是反向动力学.是根据骨骼的终节点来推算其他父节点的位置的一种方法.比如通过手的位置推算手腕.胳膊肘的骨骼的位置. 洪流学堂,让你快人几步.你好 ...

  9. Unity动画系统详解6:如何做好角色的移动动画?(Root Motion详解)

    摘要:Root Transform是body transform在Y平面上的投影,并且是运行时计算的.每一帧Root Transform的变化实时计算.然后Transform的变化会被应用到GameO ...

最新文章

  1. Spring Boot 集成 Apollo 配置中心,真香、真强大!
  2. STM32中NVIC_SystemReset()函数的作用?什么时候用?
  3. Nginx——域名|端口|目录请求转发配置DEMO
  4. iOS开发之解析XML数据
  5. 从源码深处体验Spring核心技术--基于注解的IOC初始化
  6. Usermod 命令详解
  7. ruby array_Ruby中带有示例的Array.zip()方法
  8. 一个 冒泡排序 和 选择排序 的简单c程序
  9. Spring Boot 使用模板引擎
  10. Windows进程间各种通信方式浅谈(转)
  11. 内存管理——初始化流程
  12. 基于情感词典的python情感分析
  13. 【工具】pt-online-schema-change
  14. 一步一步SharePoint 2007之一:安装SharePoint
  15. 验证英文日期格式的正则表达式
  16. 联想笔记本大小写、数字键、触摸板切换图标不显示的解决方案
  17. Ransomware的斗士——云备份系统
  18. 关于平面战机射击游戏的一点小结
  19. 逆水寒 各个服务器位置,从商人的角度看逆水寒——服务器选择篇
  20. 实验4-1-5 统计素数并求和 (20 分)

热门文章

  1. pycharm 激活码及使用方式
  2. 【面试题】测试工程师/自动化测试/测试开发面试题整理
  3. 女仆怎么画?裙子的阴影怎么画?
  4. 自建or用SaaS|ToB企业如何玩转官网数字化改造
  5. 一起学OCP:oracle-082题库及解析(21-40)持续更新
  6. RTThread 操作系统中,编译出的程序为什么能打印出当前时间?
  7. 【Unity3D】世界坐标与屏幕坐标
  8. 红米note5有没有人脸识别_官方再曝红米Note 5新特性——AI人脸识别 林斌:看一眼就解锁...
  9. C/C++用宏定义函数
  10. [转自老鲁的博客]选择:是炒股还是养猪?