Appearance
Animation Clip
一句话理解
Animation Clip 就是 Unity 里“一个动作片段”。
比如:
c
Idle.anim 待机
Run.anim 跑步
Jump.anim 跳跃
Attack.anim 攻击
OpenDoor.anim 开门它本质上记录的是:
c
在第 0 秒,某个属性是什么值
在第 0.2 秒,某个属性是什么值
在第 0.5 秒,某个属性是什么值Unity 再根据这些关键帧自动补中间过程。
Clip 里面有什么
一个 Animation Clip 主要包含:
c
Keyframes:关键帧
Curves:曲线
Animated Properties:被动画控制的属性
Events:动画事件
Loop 设置:是否循环它可以控制很多东西:
c
Transform.position
Transform.rotation
Transform.scale
SpriteRenderer.sprite
SpriteRenderer.color
UI Image 颜色
Light 强度
材质参数
脚本里的公开字段所以 Animation Clip 不只给角色用。门打开、按钮缩放、金币旋转、UI 淡入,都可以用 Clip。
怎么创建 Animation Clip
最普通流程:
c
1. 选中场景里的 GameObject
2. 打开 Window > Animation > Animation
3. 点击 Create
4. 保存,比如 Run.anim
5. 点击红色录制按钮
6. 拖动时间轴
7. 改物体属性
8. Unity 自动生成关键帧创建第一个 Clip 时,Unity 通常会自动帮你做几件事:
c
创建 .anim 文件
创建 Animator Controller
给物体添加 Animator 组件
把 Clip 放进 Controller 里作为状态2D 逐帧动画
2D 角色跑步常见是多张 Sprite:
c
Run_0
Run_1
Run_2
Run_3
Run_4把这些 Sprite 按顺序拖到场景或 Animation 窗口里,Unity 可以生成一个 Run.anim。这个 Clip 记录的是:
c
第 0 帧显示 Run_0
第 1 帧显示 Run_1
第 2 帧显示 Run_2
...如果是待机、跑步这种循环动作,要打开:
c
Loop TimeClip 和 Animator Controller 的区别
这个非常重要:
c
Animation Clip:动作内容
Animator Controller:动作切换规则
Animator State:正在播放某个 Clip 的状态
Animator Component:挂在物体上,真正播放动画比如:
c
Run.anim 是动作数据
Run State 是 Animator 里的状态
Idle -> Run 的 Transition 决定什么时候切过去
Animator 组件负责在角色身上播放所以 Clip 自己不是完整动画系统,它通常要放进 Animator Controller 里用。
Animation Event
Animation Event 可以在动画某一帧调用函数。
比如攻击动画:
c
挥刀开始
刀到敌人身上
收刀真正造成伤害应该放在“刀到敌人身上”的那一帧。
c
public void AttackHit()
{
Debug.Log("造成伤害");
}然后在 Attack.anim 的命中帧加 Animation Event,调用 AttackHit()。
适合:
c
脚步声
攻击命中
发射子弹
播放特效
开门音效代码怎么控制 Clip
新手不要直接想着“播放某个 Clip 文件”,更常见做法是控制 Animator 参数:
c
animator.SetFloat("Speed", speed);
animator.SetTrigger("Attack");
animator.SetBool("IsGrounded", isGrounded);如果确实要直接播放某个状态,可以:
c
animator.Play("Attack");或者更柔和地切换:
c
animator.CrossFade("Run", 0.15f);注意这里传的是 Animator 里的状态名,不一定是 .anim 文件名。
常见错误
c
有 .anim 文件,但物体没挂 Animator
Clip 没放进 Animator Controller
忘记勾 Loop Time,跑步只播一次
攻击动画也勾了 Loop Time,结果一直攻击
参数名字拼错,动画不切换
Animation Event 函数名写错
Clip 控制了位置,代码也控制位置,二者打架记住这句:
c
Animation Clip 是动作数据;Animator Controller 决定什么时候播放它。参考:Unity 官方 Animation Clip、创建 Animation Clip、Animation Window、Animation Events。