通过PS和Unity制作2D动画之三:动画系统

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都起作用了。

本文参考:Mecanim动画系统-使用动画系统制作不同的姿态_哔哩哔哩_bilibili

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值