Session07:跳跃动画 LayerMask

添加动画、设置转换条件

这节课我们来为人物添加跳跃动画。

按照上节课的方法,添加jump和fall的动画到Player,然后回到Animator,添加这样的transition关系

并设置condition,添加两个bool类型的参数,分别对应jumping、falling,处于idle和run的状态时如果jumping为true就切换为jump动画,处于jump状态时如果falling为true并且jumping为false就切换为fall动画,处于fall状态时如果falling为false就切换为idle动画。

写代码

void SwitchAnimation(){//正在跳跃if (animator.GetBool("jumping")){//y轴向上的速度为0,开始下落if(rb.velocity.y < 0){animator.SetBool("jumping", false);animator.SetBool("falling", true);}}//正在下落if (animator.GetBool("falling")){if(rb.velocity.y == 0){animator.SetBool("falling", false);}}}

这样就可以实现基本的跳跃和下落动画了。

但注意到if(rb.velocity.y == 0)这个判断语句,当人物处于斜坡上时y方向的速度也不为0,可能会一直处于falling状态。

所以这里要用到LayerMask

LayerMask

我们为人物脚本新添加一个组件public LayerMask ground;

因为我们想要检测是否碰撞到地面,所以我们为Tilemap添加一个Layer叫Ground,并为它选择:

然后回到Player,将刚才声明的LayerMask选择为Ground:

完善代码:

因为要检测碰撞,所以还需要一个collider组件

public class PlayerController : MonoBehaviour
{public LayerMask ground;public Collider2D coll;// Update is called once per framevoid Update(){Movement();SwitchAnimation();}void SwitchAnimation(){//正在跳跃if (animator.GetBool("jumping")){//y轴速度消失,开始下落if(rb.velocity.y < 0){animator.SetBool("jumping", false);animator.SetBool("falling", true);}}//正在下落if (animator.GetBool("falling")){if(coll.IsTouchingLayers(ground)){animator.SetBool("falling", false);}}}
}

2D游戏入门——小狐狸系列(七)人物跳跃动画相关推荐

  1. 2D游戏入门——小狐狸系列(二)处理素材

    这个课程源自b站Up主M_Studio,链接:https://space.bilibili.com/370283072 这个系列都是我自己的学习笔记,以供以后查看 Session01:安装软件& ...

  2. 2D游戏入门——小狐狸系列(六)为人物添加动画

    Session06:动画效果Animation 添加动画效果 这节课我们来为人物添加动画效果 先为人物创建一个Animator组件,并创建一个Animator Controller,将它拖到Anima ...

  3. 2D游戏入门——小狐狸系列(二十)为人物添加下蹲动画

    Session20:趴下效果Crouch 这节课我们来为主角添加趴下的效果 添加新的Button 打开Project Setting -> Input Manager,我们发现Unity并没有内 ...

  4. 2D游戏入门——小狐狸系列(十六)利用动画事件解决青蛙跳跃bug

    Session16:Animation Events动画事件 解决问题 首先有一个问题,就是人物从高处下落的时候不是falling动画,我们需要在 SwitchAnimation() 里添加以下语句 ...

  5. 2D游戏入门——小狐狸系列(十四)添加人物受伤动画

    Session14:受伤效果Hurt 首先为人物添加一个hurt动画,然后添加过渡条件: 新增一个hurting参数,用于判断受伤状态 写代码: //切换动画效果void SwitchAnimatio ...

  6. 2D游戏入门——小狐狸系列(二十一)死亡检测场景切换

    Session21:场景控制SceneManager 这节课我们来为游戏添加场景控制的效果. 死亡检测 首先设置角色死亡的效果,这里看弹幕说有用y轴坐标判断的,好像也行,但感觉用trigger来检测确 ...

  7. 2D游戏入门——小狐狸系列(十八)添加音效

    Session18:音效Audio 首先去素材商店下载,然后导入Unity. 添加bgm 为Player添加组件 Audio source,这里有一个小技巧: 左边这些蓝色的部分表示更改只应用于当前的 ...

  8. 2D游戏引擎Allegro 系列教程(二) Hello world!

    本系列文章由sky编写,转载请注明出处. http://blog.csdn.net/qq573011406/article/details/8172949 作者:袁全伟   邮箱: qq5730114 ...

  9. Matplotlib系列(七):动画

    Matplotlib系列目录 文章目录 一. 简介 二. 思维导图 三. Matplotlib动画及图形修改操作 1. 手写代码更新图形实现动画 2. animation模块动画 2.1 Animat ...

最新文章

  1. 操作系统的极简教程(一)
  2. 海量数据库解决方案2011030401
  3. Swift 泛型參数
  4. 每天一个Linux命令(17)--whereis命令
  5. 麦芒装饰装修小程序源码V3.2.59
  6. 用canvas给自己的博客园加背景(二)
  7. 戴毅茹同济matlab,Stateflow系统建模(全)解读.pptx
  8. 深入分析Android Binder 驱动
  9. 远程文件传输工具Filezilla
  10. 对比较器的使用方法的研究
  11. java中怎么实现大小写转换(利用阿斯克码)
  12. 阿里HR:你会使用selenium爬取工具? 某人:那不是随随便便吗,不止会用 还会爬取掘金小册呢!
  13. 产品读书《疯传:让你的产品、思想、行为像病毒一样入侵》
  14. xp系统搭建iscsi服务器,配置Microsoft Windows XP对MDS/IPS-8的iSCSI主机
  15. hdu5956, The Elder (树型dp, 斜率优化)
  16. mysql插入路径_Conventional-pathinsert(传统路径插入)
  17. NC11 【模板】01背包
  18. win10輸入法,繁體字,簡體字切換
  19. java 计算当天剩余多少秒
  20. 深入浅出ModbusTcp

热门文章

  1. (前端)微信小程序订阅消息功能实现
  2. 区块链开发最流行的编程语言有哪些?
  3. 传统连锁药店重塑金身与数字化渡劫
  4. python超市售货系统_用Python实现简易超市售货系统
  5. matlab遗传算法非线性约束,遗传算法求解约束非线性规划和Matlab实现.pdf
  6. MySQL(四)—— 数据表的约束(外键约束,主键约束等)
  7. 【物联网竞赛-ZigBee无线控制风扇】
  8. PHPExcel用法(详细)
  9. 调试YOLO V5出现的BUG
  10. 2022起重机司机(限桥式起重机)上岗证题目及答案