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吧