前言:对于融合树、状态机(动画状态参数、过渡线)、角色控制器、动画控制器的综合练习
1.实例:使用动画融合树实现原地不动,4个方向的走和跑的动画融合。通过代码控制角色控制器移动以及动画控制器播放动画
(1)首先创建一个Plane,一个Cube,给Plane用黄色的材质球,给Cube用红色的材质球,然后拖入一个模型到场景中,分别修改他们的Transform
![](https://img.haomeiwen.com/i9148742/d06abf030b81a7bd.png)
![](https://img.haomeiwen.com/i9148742/f726a9ac31dd324b.png)
![](https://img.haomeiwen.com/i9148742/70890c087e22d6ee.png)
![](https://img.haomeiwen.com/i9148742/33973942c56ebfdc.png)
(2)创建一个动画控制器
![](https://img.haomeiwen.com/i9148742/450f84822242789f.png)
(3)双击动画控制器,在状态机中添加融合树
![](https://img.haomeiwen.com/i9148742/0962ded4c4c120df.png)
![](https://img.haomeiwen.com/i9148742/4bb66fb4d592a734.png)
(4)双击融合树,进入内部界面
![](https://img.haomeiwen.com/i9148742/cb745523e4a1f0da.png)
(5)选中融合树,将Blend Type选为2D Freeform Directional,添加动画剪辑区域
![](https://img.haomeiwen.com/i9148742/d9abda9d6068292f.png)
![](https://img.haomeiwen.com/i9148742/105c72fb8273ca66.png)
(6)往动画剪辑区域中拖入原地不动、4个方向的走和跑的动画,共计9个动画剪辑并分别设置每个动画剪辑的位置偏移量
![](https://img.haomeiwen.com/i9148742/4c6b5c17d185c231.png)
(7)在动画状态参数列表中添加两个float类型的动画状态参数
![](https://img.haomeiwen.com/i9148742/2d148cec1fa5fab3.png)
![](https://img.haomeiwen.com/i9148742/14ab8e896412a5af.png)
![](https://img.haomeiwen.com/i9148742/239c577f8edd5f0b.png)
(8)把动画控制器拖入到模型的 Animator组件当中,再点击融合树,拖动融合树中的小红点可以让模型播放动画剪辑并发生根动作产生位置偏移
![](https://img.haomeiwen.com/i9148742/1ccf33efadb5242c.png)
![](https://img.haomeiwen.com/i9148742/5ebfceb424c99ab1.png)
(9)然后我们把起跳、浮空、落地的动画剪辑拖到状态机中;把起跳、浮空、落地依次用过渡线连接,起跳到浮空不需要过渡条件,浮空到落地需要判断是否在地面,这里我们添加一个bool类型的数据“IsLoad”用来判断是否在地面,如果是true,则可以过渡到落地动画;任意状态都可以起跳,任何状态都可以浮空(比如从高处落下来的时候是浮空的,但需要过渡条件IsLoad=false,表明它是不在地面);任何状态都可以起跳,过渡条件需要添加一个触发参数“Jump”,当我们触发它的时候播放一下起跳动画;过渡线中是否需要Has ExitTime:任何状态到起跳不需要,任何状态到浮空不需要,浮空到落地不需要,起跳到浮空需要,落地到融合树需要;播放动画剪辑是否循环:起跳、浮空、落地都不需要设置成循环,在各自的动画剪辑中的Animation面板中不勾选Loop Time
![](https://img.haomeiwen.com/i9148742/ea7037e152ba112a.png)
![](https://img.haomeiwen.com/i9148742/8be8358292385343.png)
![](https://img.haomeiwen.com/i9148742/217dba0c9f030ac5.png)
(10)右键层级视图空白区域创建一个空物体,取名为Player,让它的位置在(0,0,0),选中它,给它创建角色控制器
![](https://img.haomeiwen.com/i9148742/14754e1ba891caad.png)
![](https://img.haomeiwen.com/i9148742/5d877e26804e0c75.png)
![](https://img.haomeiwen.com/i9148742/6604987e2b4508c9.png)
(11)此时的角色控制器如图位置,我们选中Player,修改它的角色控制器属性让它和模型匹配,轴心换为中心(重心)方便观察
![](https://img.haomeiwen.com/i9148742/b3e68a73fd78b303.png)
![](https://img.haomeiwen.com/i9148742/e2d253ffd0730013.png)
![](https://img.haomeiwen.com/i9148742/ba9615959d4e5a05.png)
(12)匹配好之后,我们把模型设为Player的子物体,让模型随着Player的位置变化,并取消模型的根动画。这里如果不取消的话,模型播放动画剪辑的时候,动画剪辑也会产生位置偏移,这样角色控制器和模型的位置就不能很好的匹配
![](https://img.haomeiwen.com/i9148742/687b865ba37dfe65.png)
![](https://img.haomeiwen.com/i9148742/ba4d9f46030e2d92.png)
(13)创建一个脚本,控制角色控制器的移动和动画控制器中的动画状态参数的值从而控制融合树的参数从而控制动画剪辑的融合播放(这里我们加入了加速)
![](https://img.haomeiwen.com/i9148742/c5a3ad5dd66c5a1d.png)
最后:以上就是Unity动画综合练习的全部内容啦~下次见~
网友评论