全面解析Unity动画系统

来源:互联网 发布:陌陌辅助软件 编辑:程序博客网 时间:2024/06/05 17:49

动画融合

首先需要将角色的动画类型设置为Humanoid(确保下文的Avatar Mask相匹配)

在打开Animator窗口后,为角色添加一个默认动画,在这里给的是一个跑动动画

运行游戏,此时仅仅是个跑动动画

在这里的需求是,下半身依旧保持跑动状态,上半身处于攻击状态,这里就使用到了动画的融合(当然可以要求美术来完成,但是使用动画融合可以帮助我们来解决这一需求)
首先添加一个Layer,并为该层也添加上一个默认动画,在这里给的是一个攻击动画

接下来在Project面板上创建一个Avatar Mask(Mask中文意思:面具)
点击刚创建的Avatar Mask,编辑需要Mask的部分

将其添加到New Layer下的Mask下,并将其权重设置成1,意思是该层动画优先,但是由于Mask了下半身,所以动画的上半身默认动画为攻击动画

运行游戏,发现动画完美融合,符合我们一开始的需求(下半身依旧保持跑动状态,上半身处于攻击状态)


动画重定向

首先介绍什么是动画重定向?
简单的说就是完成一套动画在其他模型上复用
比如一个人类模型的跑动动画想在一怪兽模型上使用,使怪兽模型可以按人类的跑动动画进行跑动
由于这两个模型骨骼结构在建模时候不径相同,所以直接将人类跑动动画拖到怪兽上很有可能无法复用
但是Unity帮我们解决了这个问题
首先需要将这两个模型的动画类型都设置为Humanoid

点击Configure,使骨骼与Unity系统的标准骨骼匹配后点击Apply
Unity会自动为模型生成Avatar,按Unity标准骨骼位置记录该模型的骨骼位置信息
这样Unity通过Avatar这个纽带将两者骨骼进行了复用

根骨骼动画

在建模的时候,有些动画播放后发生的位置、方向偏转
再Unity默认情况下是使用了根骨骼动画的
在有些模型的Idel动画在播放后发生了位移后旋转,在游戏循环播放Idle动画后,累计了这些位移或旋转其效果可想而知
所以在这种情况下,需要关闭这些骨骼动画
第一种方法是,按自己的需求,将下图的3个框打勾

也有个总开关,在实例对象的Animator属相,将Apply Root Motion勾去掉


动作Mask

这个知识点很简单,但是挺实用的
和上文动画融合中的Avatar Mask操作类似,但是作用不径相同
动画融合中的Avatar Mask是在两个或多个动画进行融合时使某一层的动画的某个部位动作取消,该取消部位可以和其他层的动画进行融合
但是动作Mask仅仅指该动画Clip的某些部位动画取消
可能不容易解释清楚
接下来我接收动作Mask的操作方法

如果你也想像我上图中一个可以直接选择取消部位的话,将模型动画模式改为Humanoid即可

动作Event

该部分也是操作简单,但是使用率很大
在我们播放任务动作时,当动画运行到某一帧时,想播放一个攻击特效
此时我们可以为这一帧设置一个Event
意思就是说,当我们动画运行到这一帧后将触发自定义是Event函数

点击模型Animation,找到Event,可以为Event添加函数名,参数(4种参数选择一个)

在调用时,只需要在播放动画的Gameobject挂载一个含有函数名一致的的脚本即可调用该方法

本文介绍到这里了,更多内容:blog.liujunliang.com.cn

原创粉丝点击