Untiy的动画系统:Animation与Animator

编辑动画

动画是由关键帧定义的。我们只需在几个关键帧处修改物体身上组件的值,Unity就在其中平滑过渡做成一段动画。

一个物体上的动画能影响哪些值?

  1. 所有该物体Inspector里可以改的值(position,color,我们自己写的变量等等)

  2. 所有该物体的子物体身上的值

注意:动画不能影响已经有Animator组件的子物体!

在一个物体上同时只能有一个动画播放!

使用Animation编辑器:

  1. 选到想要的帧处

  2. 点击录制按钮

  3. 调节物体组件上的值

动画优先级

动画的优先级是比代码高的!

比如:如果一个物体正在播放控制它的位置的动画,那无论我们在代码里怎么改它的位置都不会生效。

(有不少“bug”是因为这个导致的)

管理动画:Animator

image-20231211203152876

Animator组件是用来管理动画播放的顺序与逻辑的。

每个有动画的物体都有一个AnimatorController(可在Animator组件里查看)

可以在Animator窗口查看、编辑这个AnimatorController

Animator窗口中有几个重要的组成部分:

States、Transitions、Variables、Layers

States–动画状态

image-20231211203742686

每一个State都代表了一个AnimationClip。当Animator运行到一个State时,该State对应的动画就会被播放。

当新建一个动画时,一个同名的State会被自动创建

查看State信息:Motion、Speed、Transitions

橙色的State是起始State;Animator在游戏开始运行时会直接播放该State的动画。一个动画机有且只有一个起始State。

可以右键选择任意一个State成为起始State。

Transitions–动画过渡箭头

image-20231211203932271

Transition定义了我们在State之间切换/过渡的方式。

连接两个State的白色箭头就是一个Transition。

可以右键选择在任意两个State之间创建Transition。

查看Transition的属性:

Exit Time – 当前clip播放到什么时间开始过渡到下一个clip?

Transition Duration – 过渡的过程要多久?

Interruption Source – 该过渡会被什么样的其他过渡打断?

动画里的变量Variables

动画机里的变量是用于控制Transition的发生的。比如只有当我们按下空格时,才要过渡到跳跃动画。

可以在左侧的面板管理变量。

image-20231211204335179

Animator提供了几种变量类型:float、int、bool、trigger。其中bool和trigger是最常用的。

bool:即布尔值。可以被设定为true或false。

trigger:是一个在一瞬间为true的布尔值。在那之后会即刻失效。

可以在Transition面板下方添加变量条件。当不满足条件时Animator会停在当前State;否则会执行Transition。

常用的动画API

//设定一个bool变量的值
animator.SetBool(string name, bool value) 
//激活一个trigger变量
animator.SetTrigger(string name) 
//直接跳转到对应的State,无过渡:不需要平滑过渡的情况(比如2D帧动画)	
animator.Play(string stateName)
animator.Play(string stateName, int layer, float normalizedTime)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值