Unity --- 角色动画的使用以及按键控制角色运动

1.对前面那篇文章的补充:动画器控制器不会自动获取所有的动画片段,如果我们要添加动画片段到动画器控制器中作为动画状态的话,我们要被对应的动画片段文件拖到动画器控制器中

让我们实现一个功能 --- 角色正常情况下是站立的idle,当我们按下一个按键后角色就执行pick up捡东西动画,动画播放完毕后再次执行站立动画,这个功能要怎么实现呢?

除了通过代码直接控制,我们也可以通过动画器控制器来控制

方法如下:

1.在idle处右键后选择make transition --- 建立过渡 

如果在一个动画状态处选择这个的话就会使得这个动画状态被黄线连上,成为一个默认播放动画

(一个动画器控制器中只能有一根黄线,也只能有一个默认播放动画)

(按下滚轮中键之后我们就可以拖动动画器控制器的画面)

2.按下建立过渡之后就会出现一根线,把这根线与我们要过渡的动画状态连接在一起,这样当idle动画播放完后,下一个播放的就是pick up动画(默认动画总是最先播放的)

3.执行动画的时候,如果动画没有循环播放的话,那么动画器播放器中动画播放完之后就会直接卡在这个动画状态不动了

但是当我们这样子连过渡的时候

 idle动画执行完后过渡到pick up动画,然后pick up动画执行完又过渡到idle动画,这样就形成了一个动画循环,但是!我们想要的是当我们按下按键的时候才执行pickup动画,而不是让它循环播放动画,那么我们该怎么做呢?

1.在下面这个框的顶上选择Paramenters参数选项,在这里我们可以创建参数

然后点击下面这张图的加号

点击后有四种类型的参数供我们选择,在这里我们选择trigger参数

trigger参数是一个触发器参数

(每一条过渡线都是能够被点击的,点开后inspector面板就会出现这条过渡线的各种参数)

 在这个参数版中最重要的一个是conditons面版,在这个面板中我们可以点加号添加条件(减号就是删除条件)--- 这里添加的条件就是我们创建的参数

如果加的参数是触发器参数的话,则这条过渡线只有在触发器参数处于触发状态的时候才开通,否则不开通(ps:触发器在触发了一次之后就会自动变为非触发状态)

那么我们要怎么控制触发器参数呢?

通过脚本代码来进行控制

1.创建一个脚本,然后把这个脚本挂载到具有动画器控制器,执行动画的游戏对象上

一.经典在updata方法中获取键鼠输入后进行if判断操作

二.直接获取Animator组件后调用setTrigger方法来讲触发器置为触发状态,这个方法的括号内传的参数就是被控制的触发器的名字(字符串形式)

但是问题又来了,这种方式并不能够打断当前动画直接去执行我们想要执行的动画呀

如果此时正在执行idle动画,我们点击一下鼠标后只是将触发器的开关打开,然后过渡允许进行,但是真的要执行过渡操作的话必须得等到idle动画执行完毕才行

那么有没有什么办法可以强制停止一个动画的执行直接去执行另一个动画呢?

答案是有的:

过渡这个过程包含了上一个的动画状态的退出时间和下一个动画状态的开始(上一个动画状态的退出时间指的是这个动画状态距离结束还剩下的时间)

我们可以选择取消上一个动画退出时间,这样的话一旦过渡开启就会直接来到下一个动画状态的开始

在任意一个过渡面版中都有这么一个选线,我们取消掉这个选项之后动画就不会再有退出时间了,一旦过渡开始就会直接执行下一个动画状态

猜你喜欢

转载自blog.csdn.net/qq_51947882/article/details/126533778