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

这篇博客介绍了如何在Unity中创建和管理跳跃及下落的动画状态,包括在 Animator 中设置状态转换和条件,以及通过代码回调触发动画。同时,文章还涉及了使用 LayerMask 进行地面检测,确保角色准确判断是否触地,避免了动画状态错误的问题。在修复了一些小bug后,实现了流畅的角色运动。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

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吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值