摘要:在场景中加入动态的物体,可以让整个场景更加生动、真实。Unity场景中的物体可以通过制作动画,让物体动起来。简单的动画如物体的移动、旋转(比如旋转的风扇、闪烁不定的灯泡等),复杂的动画如游戏中角色的动作、面部表情等。

洪流学堂,让你快人几步。你好,我是跟着大智学Unity的萌新,我叫小新,这几周一起来复(yu)习(xi)动画系统。

包含动画的场景

小新:“智哥,我想在场景里加上一个旋转的风扇怎么做啊?现在做的模型都是静态的。”

大智:“这就需要用到动画系统了。在场景中加入动态的物体,会让整个场景更加生动、真实。除了上周学过的粒子效果外,场景中的物体也可以通过制作动画,让物体动起来。简单的动画如物体的移动、旋转(比如旋转的风扇、闪烁不定的灯泡等),复杂的动画如游戏中角色的动作、面部表情等。”

动画系统

Unity中的动画主要是三种来源:

在Unity引擎中制作动画

从外部工具(如3ds Max、Maya等)导入动画

使用代码制作的动画

下面讨论的主要是前两种来源的动画,使用代码写动画我们后面再学习。

Unity中内置了强大的动画系统,可以支持在Unity内制作动画,也支持从外部导入动画。

动画系统基于一种名为Animation Clip(动画剪辑)的资源,这些资源以文件的形式存在工程中。这些文件内的数据记录了物体如何随着时间移动、旋转、缩放,物体上的属性如何随着时间变化。每一个Clip文件是一段动画。

这些动画可以在Unity中直接制作,也可以由美术同学在3D建模软件中制作并导入到Unity中。

在Unity中制作动画

在Unity中制作动画需要用到Animation窗口,可以通过菜单栏Window > Animation打开Animation窗口。

通过这个窗口可以创建、编辑动画,也可以查看导入的动画。Animation窗口同一时间只能查看、编辑同一段Clip中的动画。Animation适合单个物体(及其子物体)的动画编辑。咱们最近刚学的Timeline系统,适合同时对场景中多个物体制作复杂动画,还能包含音频,自定义的动画内容。

在Unity中制作动画一般分为以下几个步骤:

1、打开Animation窗口

2、选中要制作动画的物体

3、创建新的动画Clip

4、编辑、预览、修改动画

创建新的Animation Clip

选中要制作动画的物体,这时候Animation窗口会有以下两种状态:

状态1:该物体上没有动画,可以点击Animation窗口中间的Create按钮创建动画Clip。

物体上没有动画的情况

状态2:该物体上已经有动画,会在窗口中显示一段动画的关键帧。可以通过左上角的菜单切换预览动画、创建新动画。可以点击Create New Clip...来创建新的动画Clip,如下图所示。

物体上有动画的情况

点击完创建新的动画Clip后,会弹出一个文件对话框,可以设置保存动画Clip的位置。(为了保持工程文件目录的整洁,不要保存在工程根目录,建议保存在Animations文件夹中)

保存完毕后,原先没有动画的物体上会自动附加一个Animator组件,这个组件是做什么的呢?

Animator组件

Animation Clip只是一段动画数据,你可以把它类比成视频文件,而Animator组件是一个播放器,用来控制动画的播放、多个动画片段之间的切换等。

Animator窗口

Animator组件的第一个属性是Controller,对应到工程目录中的文件是一个Animator Controller类型的文件,可以在这个文件中定义动画Clip之间如何进行切换。双击这个文件会打开Unity的Animator窗口,显示该文件中的内容。后面会细讲Animator组件。

制作动画

创建了动画Clip后,就可以开始制作动画了。

Animation窗口有两种模式:录制模式和预览模式。

点击图中红色按钮进入录制模式,时间轴会显示为红色

点击图中Preview按钮进入预览模式,时间轴会显示为浅蓝色。在时间轴上点击也会自动进入预览模式

在录制模式下,当你对物体进行改动时(例如移动、旋转、缩放、修改属性等),Unity会自动在当前时间位置生成关键帧,记录修改的属性。

在预览模式下,修改物体不会自动创建/修改关键帧,如果需要创建/修改关键帧,你需要手动点击添加关键帧按钮。

录制关键帧

点击录制按钮后,就进入了录制状态。

可以通过在时间轴上拖动修改当前所在的时间位置。

在时间轴上拖动修改当前时间

也可以通过修改当前帧数输入框中的数字,修改时间轴的位置。默认情况下,动画的帧速率是60,即每秒播放60帧。如果设置当前帧数为30,就是0.5秒的位置。

在录制模式下,不管是在场景中移动、旋转、缩放物体,还是在Inspector面板中修改物体组件的属性(Unity动画支持的属性),Unity都会自动在动画Clip的当前时间上添加关键帧保存。

当前被记录的属性,在Inspector上会以红色背景显示

编辑动画

编辑完动画后,可以再次点击录制按钮退出录制模式,避免后续对物体的操作被记录到动画中。

现在你会看到在Animation窗口中,左侧多处很多个属性,这些属性就是所有被记录的属性列表。你也可以通过点击下方的Add Property按钮手动添加需要被动画记录的属性。

手动创建关键帧

如果没有在录制模式下,对物体的修改不会自动记录到动画Clip中。如果需要记录,需要手动添加关键帧进行记录。

如果在Inspector中修改了物体的属性,物体的属性会从浅蓝色背景变为浅红色,代表该属性已经被修改。这时候你可以右键点击对应的属性,在弹出菜单中点击Add Key即可添加关键帧,将该属性的数据保存到动画Clip中。如果你在当前帧修改了多个属性,可以点击菜单中的Key All Modified(将所有修改的属性记录关键帧)或Key All Animated(记录属性列表中所有属性的数值,即使与上一帧相同数值的属性也会被记录)来一次性将所有修改的属性保存。

属性上的右键菜单

也可以点击Animation窗口左侧的Add Keyframe按钮来记录当前属性列表中选中属性的关键帧,如果当前没有选中任何属性,则会记录所有属性。如下图所示。

小技巧

添加关键帧也有快捷键哦,记住快捷键能大幅提高制作动画的效率。

K Key All Animated,将记录当前属性列表中选中属性的关键帧,如果当前没有选中任何属性,则会记录所有属性。

Shift + K Key All Modified,将动画属性列表中所有已修改的属性的数值记录为关键帧。

使用曲线编辑动画

默认情况下,Animation窗口是DopeSheet模式,显示的是关键帧的点。可以通过点击下方的Curves切换为曲线模式,进一步调节关键帧之间的数值是如何过渡的。

切换到Curves模式后,出现的曲线编辑框和我们之前在粒子系统模块学到的用法是一样的,在这就不重复了。

可以在左侧属性列表选中一条或多条曲线进行编辑。

小技巧

别忘了F的妙用,F键可以让曲线充满整个窗口,这在不同属性的曲线之间切换时非常有用。

编辑关键帧

编辑关键帧时,可以多选(在Curve编辑中同理):

按住Shift或Ctrl,再点击关键帧可以选中多个关键帧

通过框选多选关键帧

按住Shift或Ctrl的同时框选,可以添加或移除框选住的关键帧

框选关键帧

批量移动关键帧

批量缩放关键帧

Ripple Edit 波纹编辑

你会发现直接拖拽多个关键帧时,后方的关键帧并不会跟随这些关键帧移动。如果你想让后方的关键帧也跟着移动,可以按住R键,同时拖拽这些关键帧。这种编辑方式叫做Ripple Edit(在音视频编辑软件中很常见)。缩放同理。

Ripple Edit

预览动画效果

点击Animation窗口中的播放按钮,就可以在Scene中预览动画。

在游戏运行时播放动画

今天做出来的动画,在点击Play按钮以后就会自动循环播放了。如果不想让它循环播放,可以选中Animation Clip文件,取消Loop的勾选。

如果不想让这段动画自动播放,那就需要修改Animator Controller啦,接着往下学吧!

总结

大智:“敲黑板,今天讲了如何使用Unity内的Animation给物体做动画,希望你能记住一下几点:”

Animation Clip是Unity中保存动画的资源文件,保存在工程中。

Animator是Animation Clip的播放器。

Animator Controller是一个“导演”,类似“播放列表”,用来指导Animator如何播放其中的Animation Clip

今日思考题

大智:“动手创建一个简单的动画试一试吧!”

小新:“好嘞~”

大智:“收获别忘了分享出来!别忘了分享给你的朋友,也许能够帮到他。”

扩展阅读

【扩展学习】在洪流学堂公众号回复动画可以阅读本系列所有文章,更有视频教程等着你!

呼~ 今天小新絮絮叨叨的真是够够的了。没讲清楚的地方欢迎评论,咱们一起探索。

我是大智(微信:zhz11235),你的技术探路者,下次见!

别走!点赞,收藏哦!

好,你可以走了。

unity3d怎么让模型动起来_Unity动画系统详解1:在Unity中如何制作动画?相关推荐

  1. T4M插件放入unity后怎么找不到_Unity动画系统详解4:如何用代码控制动画?

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

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

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

  3. Unity动画系统详解3:如何播放、切换动画?

    摘要:[长文预警,建议先收藏]有了模型和多个动画以后,在Unity中如何控制它们的播放和切换呢?本文带你一站式解析Unity的Animator模块. 洪流学堂,让你快人几步.你好,我是跟着大智学Uni ...

  4. T4M插件放入unity后怎么找不到_Unity动画系统详解6:如何做好角色的移动动画?(Root Motion详解)

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

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

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

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

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

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

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

  8. unity velocity_Unity动画系统详解5:BlendTree混合树是什么?

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

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

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

  10. Unity动画系统详解7:Layer是什么?

    摘要:使用Layer可以用来管理角色的不同身体部位.比如下半身用于行走或跑步,上半身用于射击或投掷物体. 洪流学堂,让你快人几步.你好,我是跟着大智学Unity的萌新,我叫小新,这几周一起来复(yu) ...

最新文章

  1. 第5章 用户身份与文件权限
  2. oracle索引块和数据块,Oracle中,如何确定热快是数据块还是索引快?
  3. python3安卓版下载-QPython3H安卓运行Python神器
  4. 微软Azure CDN现已普遍可用
  5. 市值十亿美金公司的五个特点
  6. everedit选择_EverEdit(文本编辑器)
  7. NOj 720项目安排
  8. linux实验五 信号应用,实验五 进程间通信(中)
  9. 1005. 继续(3n+1)猜想 (25)
  10. 订餐系统之自动确认淘点点订单
  11. 【Shell】压缩相关命令
  12. 实现一个基于主存的虚拟块设备驱动程序_存储器的层次结构:寄存器、高速缓存、主存、本地磁盘...
  13. 数据库之如何解决SQL Server 2008 R2连接不上服务器?
  14. 如何导出久其报表所有数据_久其报表不能传输怎么办?
  15. Mysql之注入工具-yellowcong
  16. html5与java开发视频教程_JAVA视频—WEB开发视频教程
  17. 关于spyder打不开的问题
  18. java网络爬虫如何控制爬取的深度_Java 动手写爬虫: 二、 深度爬取
  19. 基于MATLAB的隐函数与三维画图(附图与代码)
  20. 关闭计算机睡眠模式,电脑睡眠模式怎么关闭

热门文章

  1. 2021年12月最新大数据白皮书(附下载)
  2. unity多人联机插件_Unity网络系统插件,打通游戏联网任督二脉
  3. 查看jdk版本号和安装目录
  4. 流畅的 Python
  5. 【loadrunner】测试手机app性能
  6. PHP汉字转换拼音的函数代码
  7. NVIDIA-CUDA编程初探
  8. 《商务与经济统计》练习:案例3-4:天使巧克力的网络交易
  9. 《商务与经济统计》练习:案例8-1:杂志订阅者问卷调查分析
  10. C#:实现敏感词过滤算法(附完整源码)