Unity提供了Animation编辑器,可以编辑物理动画。例如场景中背景有一个来回摇动的秋千,它不会与其他游戏对象交互,这时可以使用Animation编辑器来完成。
选中要加动画的游戏物体,Window/Animation,打开Animation窗口,可以录制关键帧动画。Ctrl 6(添加Animator组件,这时候在animation窗口中制作的动画不是legacy动画,不能单独把动画挂到animation中,除非打开debug模式,将animationclip改成legacy)
选中游戏对象,添加Animation组件。用ctrl 6打开(不添加Animator组件,是传统动画,legacy模式)
点击录制按钮,添加属性Add Property,然后添加关键帧,修改属性下对应的值,点击播放预览。
Animation界面设置
Samples 采样,可以修改速度(如果不显示,右上角点击三个点的按钮)
Create new Clip... 创建新的动画片段
Curves 曲线
Add Key 添加关键帧
Delete Keys 删除键
Clamped Auto 限制自动
Auto 自动
Free Smooth 自由平滑
Flat 平坦的
Broken 折断
Tangent 切线
滚轮缩放
快捷键:
A F
注意:
按下录制按钮时,在场景中调节位置等参数,会自动记录到关键帧;否则需要在animation窗口中调节数值。
什么时候需要给动画添加事件?
当我们需要在某个动画执行过程中触发某个方法的时候,可以采用为动画添加事件的方式实现。
例:
攻击动画,触发一个特效
添加事件,然后编辑事件,为编辑动画的对象添加脚本,选择脚本中对应的方法
Animation 当前播放动画
Animations 动画片段集合,把所有要控制的动画放入到该集合中
Play Automatically 运行自动播放
Animate Physics 选此项后,角色动画可以与unity的物理引擎进行交互。尤其在更新函数中,可以使动画正常播放。
Culling Type 控制角色在场景中的显示方式,一种是AlwaysAnimate,此项是角色总会有动画,角色不在摄像机范围内,角色的动画仍会进行;另一种是BaseOnRenderers,当角色不在摄像机范围时,角色仅会播放自身带有的rootMotion,而身体中的其他动画就不会播放了。
Wrap Mode 循环模式
Default 默认
Once 一次
Loop 循环
Ping pong 往返循环
Calmp Forever 限制动画在最后一帧
例:
长按W键播放动画1,松开W键时播放动画0(注意导入Lux动画时要选择legacy动画,同时注意打开环境光照亮场景)
Animation ani = GetComponet<Animation>();
Ani.Play(“Animation组件中集合Animations里的名字”);
IsPlaying 是否正在播放某个动画
Play 播放动画
PlayQueued 顺序播放,在前一个动画播放完成后播放该动画(wrap mode应该为once)
CrossFade 在一定时间内淡入名称为name的动画并且淡出其他动画(比较常用)
CrossFadeQueued 在前一个动画播放完成之后淡入淡出下一个动画。
动画倒播:
ani.Play(“xx”);
ani[“xx”].time = ani[“xx”].length
ani[“xx”].speed = -1;