Unity人物动画的设置(笔记)

我们这一章要学习,让人物跑动的时候播放动画,并且在站立的时候也能有一个Idle(人物站立不动的时候所播放的动画),而不是一直保持这个不动的姿势,我们可以游览一下我们这个人物的动画,点开我们人物的文件夹,然后找到“Animations”d92221f6543745f4a89a5713ece4e97d.jpg

 我们可以点击游览这些Animation(动画),ac787b9e6b004c81bb294f09f618f39b.jpg

 如果你的人物是一个未渲染出来的紫色的人形,那么我们就得点这个“其他”,然后选择我们的人物模型,设置好以后就可以正常展示了,然后播放一下我们就可以游览了,这些Animation里有人物站着不动的时候的Idle,有人物缓慢行走的“wake”,有跑步的时候的动画“run”,那么我们就要将我们的这些动画添加到我们人物的“Animator controller”里面来,我们现在来操作一下叭!选中我们的player之后,我们可以看见这个人物本身是带有这个Animator的插件的:60107b77659f4320a2b56d84fca9aa93.jpg

 因为我这用的素材是自带的prefab,它这里面本来就带有这个组件,如果没有的话,也可以在下面这个“add component”,添加上这个组件d49e1e75c7d542a0a90d4f69bce71e29.jpg

 那我们要创建一个Animator的controller了,创建之前,我们要先将我们这个人物保存为一个prefab,这样方便我们以后的更改和使用,创建一个新的文件夹,取名就叫Prefabs,然后我们把我们的人物拖拽放到这个文件夹里面0f9e6f8214e044e9968eab3f6289c7bb.jpg

 这时候它会弹出一个窗口:7d8a2815667746be93f6fcf9d020c043.jpg

 我们选择“original prefabs(原来的预制体)”,然后我们回来改一下我们人物的名字就叫“Player”。然后我们要开始创建animator controller了,新建文件夹名为:Animations,文件夹底下再创建一个文件夹叫Animator,然后我们在Animator文件夹底下创建一个新的Animator Controllere23b142cedcc4338906c0ec80f244441.jpg

 我们给它取名就叫“Player”884d262f56a14efab4b383105c37e70e.jpg

 我们就将这个Player拖拽到人物的Animator插件中:457892e8ed1048dab4c5753a167bbbb4.jpg

6013bc91713c41dc9fc623a4e9311555.jpg

 接下来我们就要打开我们这个Animator窗口

 20a9bd8065ea4e15acf4159430872c54.jpg

如果你没有这个窗口,也可以在这里打开8e19ad1e9fb5489b9bdd9ffd79331299.jpg 

 要打开animator窗口而不是animation,打开以后就是这样一个基本的情况4418862e6d844fd3b231d0778eed021e.jpg

 那么我们现在要使用一个方法,我们要创建一个“Blend tree”

科普:BlendTree主要作用: 把几个类似的动画片段合成复合的动画片段,可以说相当于一个动画合成器

然后我们要创建这么一个混合树, 鼠标右击屏幕

4a9cd31c783444a7b48ef946fb7085bb.jpg

添加新的混合树,这样的话我们这个混合树就会被设置为默认的动画了,双击这个混合树,我们可以编辑这个混合树,我们先给这个混合树改个名字,就叫LocoMotion,双击进来混合树,那我们现在就要开始来设置这个bleed tree了

在这个 bleed tree创建的时候呢,它会默认创建一个品如“参数”6e022c7ef71f4471b024ce529a3869b6.jpg

 一开始这个参数中默认创建了一个参数我们可以将它删除然后我们自己设置一个参数,我希望我的这个bleed tree可以根据我人物的移动来切换它的移动动画,然后我们创建一个参数,类型为float

5dd4f5b6b9484e76b07f01cd09e9473c.jpg

 

 然后我们给它取名就“Speed”,要留意,我们在命名的时候,如果你习惯使用首字母小写,那么你要保证你所有的参数最好都是小写字母开头的,因为这个参数我们通常在代码当中都是要string类型去调用的,如果你大小写拼错的话,会出现问题,那么接下来我们选中这个bleed tree 在右侧的这个“Paramerter”这里下拉菜单选择“Speed”

 

46f62b0dc9e7466f8021f59d1d7170d5.jpg

然后添加三个Motion,因为速度越来越快,所以动画应该是第一个“不动”的时候的动画

第二个是走路的时候

第三个是跑步的时候,

我们去到我们人物的animations那里,将我们要用的动画拖拽放置到Motion里面。那我们现在要使用代码去实现这个动画在人物上的应用了。

返回我们的“PlayerController”,既然我们要控制我们的animator,那么我们就要先获得我animator(动画)的控制器,那么我们用Animator这个类去定义一个控制器,名字就叫anim(注意这个Animator这个单词不要拼错了,注意它单词和Animation这个单词的区别),定义好这个控制器以后,那么现在我们就要在Update中去让我们这个控制器获得“Animator”这个插件了,获得了这个插件以后,我们就能获得我们刚刚添加到animator的动画了:cfb5d0ba5c2c4750ae861155fa4f1973.jpg

 和agent获得导航插件的方法一样

anim=GetComponent<Animator>();

那么现在我们就已经获得了这个插件的动画了,那么现在我们就要写一个方法来实时的切换我们的这个动画,那么实时切换动画,我们要放在Update函数中去调用运行,所以我们把Update函数写回来,那么我们现在要写一个动画切换的方法,给它起名就叫SwitchAnimation,那在这里,我们要将这个插件里的“Speed”设置到和我们人物速度同步,因为我们这个Speed是一个浮点类型的,所以我们可以使用anim.SetFloat()函数,第一个参数就是要同步参数的名称Speed,因为我们调用Speed是用一个string类型的去弄的,所以这里第一个参数要写成string类型,也就是("Speed"),第二个参数就是所要同步的人物速度参数,如何获得这个人物的速度呢?我们可以用agent底下的velocity直接去获得人物的速度值,因为我们的Speed是一个浮点数,所以我们要将这个获得的人物的速度值转换成浮点类型,我们可以直接就用sqrMagnitude,这样我们就可以将我们这个Vector3类型的值转换成浮点类型的值传回来了,别忘了写完这个函数,我们还要回到Update函数中去调用,那么我们写到这样我们保存代码返回我们的Unity项目(如果你想手动调整我们的人物动画播放的起始速度的话,你可以把这个勾勾取消然后自己在这里设置:

995200fc3e0542ff90e3dae874984fd8.jpg

 

 

 那现在我们人物就可以实现站在它能动动,跑步也有跑步的样子了,那这就基本就实现了这样的功能了。

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值