Unity动画系统常用知识总结

  • 资源导入需要注意的地方
  • 常用的组件
    • Animator 组件
  • Avatar Mask 骨骼遮罩
  • Animator Controller
    • 动画切换
    • Any State
    • Has Exit Time:是否有退出时间(是否一定要播放完当前动画才可以切换到下一个)
    • 如何让两个动画同时播放,例如一边走路一边挥手
    • 混合树
      • 1D
      • 2D
  • IK反向动力学
  • 动画事件

资源导入需要注意的地方

导入数据的时候,需要看当前模型是否符合unity的正常大小。
方法:创建一个Cube,然后将模型拖到场景中与Cube比较一下大小,如果大小不合适需要在模型中调整,而不是调整unity的游戏物体,避免出现不必要的错误。

常用的组件

Animator 组件


重点介绍一下前三个。
Contorller:游戏状态控制器,控制当前角色处于什么状态(播放对应的动画)。
Avatar:骨骼,当前人物模型的骨骼,通常情况下美工配好。
只要有经过处理的Avatar,我们就可以通过 Animator Controller动画控制器控制人物模型播放一组制定的动画。
所以符合Avatar进行Retaring重定向的条件为:
1、相同的Animator Controller控制器。
2、都有经过成功处理的Avatar资源组件(可以不是同一个Avatar)。
3、可以模型不带任何动画。

Apply Root Motion:简单理解,有的动画自带移动,带有矢量,如果勾选,则表明使用动画自带的位移,不适用则自己手写移动相关的代码。

Avatar Mask 骨骼遮罩


在Project面板创建,点击对应的位置,即可让对应的部位无法播放动画,在Animator Controller中的layer层绑定,绑定完之后该layer层下的所有手臂动画无法播放(该图中)。

Animator Controller

动画状态控制器,控制动画切换的核心组件。

动画切换

常用动画切换,创建两个State,然后点击其中一个右键选择Make Transition
在Parameters中添加跳转参数。
可以通过代码控制
animator.SetBool(“CanMove”, true);
满足条件时就会走向下一个状态,如下图。

Any State

代表当前所有状态都可以转向一个,例如死亡,避免出现连线到处都是。

Has Exit Time:是否有退出时间(是否一定要播放完当前动画才可以切换到下一个)

如何让两个动画同时播放,例如一边走路一边挥手

我上家公司做模拟休闲游戏,有个厂长巡查,需要走路,挥手,边走路边挥手功能,下面探讨一下如何实现。
1、让美工一共做三个动画,分别是走路,挥手,走路+挥手,但是这样非常繁琐,而且维护起来也麻烦(需要不同状态之间来回切换)。
2、使用多个layer层

如图所示,Base Layer控制行走,Arm Layer控制厂长挥手,但是需要注意,Arm Layer的权重需要和Base Layer一样,Blending中需要改为Additive,默认是override覆盖重写。
3、使用混合树,下面单独开一个标题讲混合树,但是混合树更适合多种状态之间的平滑处理,而不是同时实现效果。

混合树

1D

在Animator面板中创建BlendTree,先从最简单的1D讲起。
添加一个BlendValue,然后在BlendTree中添加两个行为,最左边是Walk,最右边是Run,动画系统会自动综合。

也可以在混合树中添加混合树,达到与更多效果综合的效果,我用的不多,此处不再赘述。

2D

2D Directional两个差不多,Freedom比Sample更好用一点,但是需要注意,Freedom中必须要有一个0,0点,即Idle状态。

如上图所示,目前一共有五个状态,分别是向前、后、左、右跑,还有一个待机,我们可以获取用户输入WASD的坐标,GetAxis方法,将对应的值传给动画组件。
animator.SetInteger();
然后角色就会做对应的动画。
ps:时间的那个图标,改为负数则是向后运动。
另外,设置完动画这里最好选择Velocity XZ,代表由XZ的坐标控制动画切换,对应两个参数。


剩下的一个笛卡尔积2D,更加复杂,也适合更多的动画平滑切换,我用的不多,此处不再赘述。

IK反向动力学

简单介绍一下,例如你推门,你给门一个力,相对的门也会给你一个力,他会让你的手臂弯曲,这个就被称之为IK反向动力学。

    void OnAnimatorIK(int layerIndex){{//设置位置权重animator.SetIKPositionWeight(AvatarIKGoal.RightHand, 1f);//设置旋转权重animator.SetIKRotationWeight(AvatarIKGoal.RightHand, 1f);animator.SetIKPosition(AvatarIKGoal.RightHand, objPosition.position);animator.SetIKRotation(AvatarIKGoal.RightHand, objPosition.rotation);}}

如上图所示,角色右手受到球的影响,需要注意,需要将layer层的IK Pass勾选上,代码中加上对应的逻辑即可。

动画事件


找到资源的动画,在Event这一栏可以添加事件,选择脚本,与脚本的方法即可。选择固定的某一帧执行。

Unity动画系统常用知识总结相关推荐

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

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

  2. Unity动画系统简单介绍

    Unity动画系统知识点简单介绍(简易) 本文是学习文,其中转载某些文章,如有侵权,联系删除. 学习要点: 1.动画的分类 游戏物体的基础动画设置,UGUI设置的按钮状态,2D游戏Sprite动画,R ...

  3. Unity动画系统详解9:Target Matching是什么?

    摘要:在游戏中,经常有这种情况:角色的手或者脚需要在特定时间放在特定的位置.比如角色需要用手撑着跳过一个石头或一堵墙,或者跳起抓住房梁.Target Match就是让动画的特定片段去匹配特定的位置. ...

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

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

  5. Unity动画系统学习

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

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

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

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

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

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

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

  9. VR开发——Unity动画系统(V客it学院技术分享)

    在我们进行VR开发的过程中,免不了需要各种各样的模型动画.那么面对这样的简单动画,我们大可以使用Unity的动画系统来完成整个事情. 前段时间我在博客看见了一篇非常不错的动画系统讲解,今天我就借花献佛 ...

最新文章

  1. PAGER set to stdout_Python || 学习笔记(4):dictamp;amp;set
  2. Python 在 命令行中 安装 matplotlib
  3. python工作招聘-爬了招聘网站之后,给你几点学习Python的建议
  4. python3官方最新下载-Python
  5. POJ 3635 Full Tank?
  6. 2017—2018 实验报告:实验一
  7. 实例29:python
  8. Linux下apache与tomcat完美整合笔记
  9. 2019.02.19 bzoj2655: calc(生成函数+拉格朗日插值)
  10. win10系统下第三方软件字体大小调整
  11. 软件质量管理体系-ISO 9000
  12. 操作系统动态分区分配方式C/C++语言(首次适应算法(FF)循环首次适应算法(NF)最best适应算法(BF)最坏适应算法(WF))
  13. 网线制作IP组网(基于华为eNSP模拟器)
  14. C# 打开和关闭软键盘
  15. 11.03 CSS的基础应用
  16. 大智能时代,未来人工智能发展新趋势
  17. 弱电流检测必备的保护环
  18. linux编译.o文件,使用-O0编译Linux内核
  19. LM38简易方波发生器
  20. 一、python入门整体快速学习

热门文章

  1. 8.0强行转换后变成了7_爱剪辑:如何把竖屏视频变成横屏
  2. 现在还可以一键自动生成古诗词,你知道吗?
  3. 云平台和买服务器对比
  4. Google Fonts的使用
  5. JAVA 基础深化和提高【上】
  6. uni-app 自定义选择日期2(2021-09-16)
  7. python 插件 库
  8. 平面设计图文排版如何进行
  9. c# 解析json 字符串 报异常 Bad JSON escape sequence 解决方案
  10. 互联网产品经理能力矩阵:基本能力之文档能力