2D游戏入门——小狐狸系列(七)人物跳跃动画
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游戏入门——小狐狸系列(七)人物跳跃动画相关推荐
- 2D游戏入门——小狐狸系列(二)处理素材
这个课程源自b站Up主M_Studio,链接:https://space.bilibili.com/370283072 这个系列都是我自己的学习笔记,以供以后查看 Session01:安装软件& ...
- 2D游戏入门——小狐狸系列(六)为人物添加动画
Session06:动画效果Animation 添加动画效果 这节课我们来为人物添加动画效果 先为人物创建一个Animator组件,并创建一个Animator Controller,将它拖到Anima ...
- 2D游戏入门——小狐狸系列(二十)为人物添加下蹲动画
Session20:趴下效果Crouch 这节课我们来为主角添加趴下的效果 添加新的Button 打开Project Setting -> Input Manager,我们发现Unity并没有内 ...
- 2D游戏入门——小狐狸系列(十六)利用动画事件解决青蛙跳跃bug
Session16:Animation Events动画事件 解决问题 首先有一个问题,就是人物从高处下落的时候不是falling动画,我们需要在 SwitchAnimation() 里添加以下语句 ...
- 2D游戏入门——小狐狸系列(十四)添加人物受伤动画
Session14:受伤效果Hurt 首先为人物添加一个hurt动画,然后添加过渡条件: 新增一个hurting参数,用于判断受伤状态 写代码: //切换动画效果void SwitchAnimatio ...
- 2D游戏入门——小狐狸系列(二十一)死亡检测场景切换
Session21:场景控制SceneManager 这节课我们来为游戏添加场景控制的效果. 死亡检测 首先设置角色死亡的效果,这里看弹幕说有用y轴坐标判断的,好像也行,但感觉用trigger来检测确 ...
- 2D游戏入门——小狐狸系列(十八)添加音效
Session18:音效Audio 首先去素材商店下载,然后导入Unity. 添加bgm 为Player添加组件 Audio source,这里有一个小技巧: 左边这些蓝色的部分表示更改只应用于当前的 ...
- 2D游戏引擎Allegro 系列教程(二) Hello world!
本系列文章由sky编写,转载请注明出处. http://blog.csdn.net/qq573011406/article/details/8172949 作者:袁全伟 邮箱: qq5730114 ...
- Matplotlib系列(七):动画
Matplotlib系列目录 文章目录 一. 简介 二. 思维导图 三. Matplotlib动画及图形修改操作 1. 手写代码更新图形实现动画 2. animation模块动画 2.1 Animat ...
最新文章
- 操作系统的极简教程(一)
- 海量数据库解决方案2011030401
- Swift 泛型參数
- 每天一个Linux命令(17)--whereis命令
- 麦芒装饰装修小程序源码V3.2.59
- 用canvas给自己的博客园加背景(二)
- 戴毅茹同济matlab,Stateflow系统建模(全)解读.pptx
- 深入分析Android Binder 驱动
- 远程文件传输工具Filezilla
- 对比较器的使用方法的研究
- java中怎么实现大小写转换(利用阿斯克码)
- 阿里HR:你会使用selenium爬取工具? 某人:那不是随随便便吗,不止会用 还会爬取掘金小册呢!
- 产品读书《疯传:让你的产品、思想、行为像病毒一样入侵》
- xp系统搭建iscsi服务器,配置Microsoft Windows XP对MDS/IPS-8的iSCSI主机
- hdu5956, The Elder (树型dp, 斜率优化)
- mysql插入路径_Conventional-pathinsert(传统路径插入)
- NC11 【模板】01背包
- win10輸入法,繁體字,簡體字切換
- java 计算当天剩余多少秒
- 深入浅出ModbusTcp