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

目录

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

 

1.跳跃动画

 

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

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

 

 

 

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

 

 

 

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

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

 

 

 

然后打开Animtor管理这俩动画

首先理清几个状态的转换

idle(常态)中可以jump(跳跃)

run也可以jump

但是jump之后应该是下落,然后回归常态

理清逻辑之后就可以在几个动画之前设置过渡

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

 

 

 大概是这样

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

 

 

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

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

 

 

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

 

 

 然后为idle→jump,run→jump 设置一下动画的duration,exitTime,然后设置条件为跳跃时触发(isJump==true)

设置完跳跃动作的触发就可以在脚本文件里对条件进行回调设置了

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

 

 

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

 

 

 似曾相识の代码.jpg

 

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

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

 

 

 

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

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

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

 

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

 

 

 

所以设置一下跳跃到下落的处理下落到常态的处理

然后在代码中增加对跳跃,下落状态的判断(都在注释里了),写完代码记得塞在FixedUpdate中

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

 

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

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

 

 (莫名像骑士踢,凑合着用也还算可以

但原教程的操作似乎可以应用更广,还是照着学学吧

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

 

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

2.LayerMask

 

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

 

 首先声明一个LayerMask

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

 

 图层分了很多个,而声明ground就是为了区分哪一个是地图图层,先新建一个图层层级命名为Ground;Unity3D开发学习⑥ 跳跃动画,LayerMask

 

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

 

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

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

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

 

 

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

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

 

 

 

 

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

 

 声明,拖入,老一套了

然后写判断代码

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

 

 然后可以执行康康效果

主要的问题都处理完了,现在也积累了不少小bug

例如走动的时候秃然急停,修改后从斜面跳跃还是无法及时切换动画状态,跳跃撞到ground就直接变成常态(误判落地)之类的

那就之后再DEBUG吧

 

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

上一篇:React 现代化测试


下一篇:A - Jumping Buildings Gym - 102302A(单调队列,找这个数右边第一个比他大的数)