Unity3D开发学习⑥ 跳跃动画,LayerMask

1.跳跃动画
首先新建一个动画,拖素材(记得选中player和设置素材图片大小) 设置一下采样率就搞腚了跳跃动画,可以准备设置到角色上了


直接拖入就发现这是跳跃的完整动作(包括下落,所以应该分成fall 和 jump俩个动画

然后打开Animtor管理这俩动画
首先理清几个状态的转换
idle(常态)中可以jump(跳跃)
run也可以jump
但是jump之后应该是下落,然后回归常态
理清逻辑之后就可以在几个动画之前设置过渡

大概是这样

然后添加状态转换的条件,这里先添加俩个布尔值参数


然后为idle→jump,run→jump 设置一下动画的duration,exitTime,然后设置条件为跳跃时触发(isJump==true)
设置完跳跃动作的触发就可以在脚本文件里对条件进行回调设置了


似曾相识の代码.jpg
之前已经在这里声明了Animator控件,所以想要回调跳跃状态只要在跳跃实现代码中回调即可

然后预览的时候就发现跳时有动画了,但是没有处理从跳跃到下落的代码,于是角色就一直卡其脱离太



所以设置一下跳跃到下落的处理下落到常态的处理
然后在代码中增加对跳跃,下落状态的判断(都在注释里了),写完代码记得塞在FixedUpdate中

然后就可以肆意的蹦蹦跳跳了


(莫名像骑士踢,凑合着用也还算可以
但原教程的操作似乎可以应用更广,还是照着学学吧

刚才的代码会出现跳到斜坡上可能不能及时切换动画的问题(到地图最高点y速度也为0
2.LayerMask

首先声明一个LayerMask

图层分了很多个,而声明ground就是为了区分哪一个是地图图层,先新建一个图层层级命名为Ground;


然后设置tilemap的图层,还有controller的 Ground

然后需要在代码中判断是否触碰到地面,首先需要获取角色的collider


声明,拖入,老一套了
然后写判断代码

然后可以执行康康效果
主要的问题都处理完了,现在也积累了不少小bug
例如走动的时候秃然急停,修改后从斜面跳跃还是无法及时切换动画状态,跳跃撞到ground就直接变成常态(误判落地)之类的
那就之后再DEBUG吧


浙公网安备 33010602011771号