1、创建Animator
在Hierarchy中点击toothman
点击【window -> Animation -> Animator】,创建出Animator如下:

2、创建Animation
点击【window -> Animation -> Animation】

点击Create,并将Anim文件放到Assets下指定的位置

此时还可以看到对象下挂载了Animator的组件:

3、制作帧动画
点击record按钮(下方图片中箭头所指红色按钮),在Scene界面调整角色的动作,得到第一帧的图片信息。

拖动时间线,依次制作各帧的动作。

假如想要复制某个动作,可以在时间轴上点击某个动作的点Ctrl+C,然后在别的时间上Ctrl+V即可。

点击Create New Clip可以创建新的动画。

4、用Parameters触发不同的动作
通过上一步制作了3个不同的动作,分别是Static(静止状态,就一帧啥都不干),Wave(挥手动作),Jump(跳跃动作)。
进入Animator面板,我们可以看到所有的所有的节点。
Entry:对象开始节点
Any State:对象任何时刻
Exit:对象结束节点

我们看到Entry已经有一个状态转移到Wave动作。
程序点击执行,我们看到对象一直在Wave,这不是我们想要的结果。
我们希望对象大部分情况下是Static的状态,当触发相应的条件时再做相应的动作。
(1)切换默认转移
在Static下右击鼠标,点击“Set as Layer Default State”,我们可以看到Entry指向了Static节点。

(2)创建trigger触发
右击Static节点,点击“Make Transition”。

把Transition线拉到Wave节点

在Parameters添加Trigger类型的变量tWave,同时在Transitions面板下的Conditions中添加tWave变量。

此时执行程序,点击tWave,会看到从对象从Static状态切换到Wave状态。

从Wave再建立一个Transition到Static,这样Wave一次后又切回Static状态,就不用一直Wave了。下次还想让对象Wave,再点击一次tWave即可。

所以,Trigger是一次触发。
(3)创建Bool变量
创建bool变量isJump
从Any State建立一个transition到Jump,设置条件为isJump=true
从Jump建立一个transition到Static,设置条件为isJump=false

执行程序,点击isJump,我们看到对象一直在做Jump动作。
所以,bool/int/float变量是持久触发。
5、分层动画控制
(1)作用
默认情况下动画只有一层Layer,如下图所示:

但是有时我们需要从多个维度控制同一个对象,比如:
静止状态下笑/静止状态下哭。
静止状态意味着手部/脚部动作不会动,笑/哭意味着面部表情不同。
所以我们需要从2个维度控制同一个对象。
(2)多层动画控制作
我们新增了面部表情相关的眼睛、眉毛的动画。

新创建的动画会自动放到Base Layer中,我们需要Copy到Emotion层。

(3)更新layer权重
添加完Trigger条件后,我们执行程序点击trigger变量发现不起作用

点击Emotion的设置,我们发现它的Weight为0,所以才没有起作用。

调整Weight到1。
然后再执行程序,我们发现两个Layer都起作用了。


9413

被折叠的 条评论
为什么被折叠?



