前言
欢迎来到【制作100个Unity游戏】系列!本系列将引导您一步步学习如何使用Unity开发各种类型的游戏。在这第26篇中,我们将探索如何用unity制作一个unity2d横版卷轴动作类游戏,我会附带项目源码,以便你更好理解它。
本节主要是控制人物动画切换
动画
对动画还不了解的可以看我这篇文章:【Unity游戏开发教程】零基础带你从小白到超神27——混合状态,混合动画,动画分类
走路动画
跑步动画
跑步走路切换
代码控制动画切换
public class PlayerAnimation : MonoBehaviour { private Animator anim; // 动画控制器 private Rigidbody2D rb; // 刚体组件 private void Awake() { // 获取组件引用 anim = GetComponent<Animator>(); rb = GetComponent<Rigidbody2D>(); } private void Update() { SetAnimation(); // 更新动画状态 } public void SetAnimation() { // 根据水平速度设置动画参数 anim.SetFloat("velocityX", Mathf.Abs(rb.velocity.x)); } }
效果,如果用的不是手柄,pc可能不好测走路动画效果(当然你可以简单粗暴的)
跳跃动画
跳跃动画分为开始起跳 起跳中 顶点 下落 落地
跳跃测试,看rigidbody2d Velocity y值的变化来配置跳跃动画的切换条件
混合树控制不同的跳跃动画切换
过渡到落地动画
确保落地动画播放100%,再转为待机动画,所以我们这里退出时间设置为1
修改PlayerAnimation,切换动画状态
private PhysicsCheck physicsCheck; physicsCheck = GetComponent<PhysicsCheck>(); public void SetAnimation() { // 根据水平速度设置动画参数 anim.SetFloat("velocityX", Mathf.Abs(rb.velocity.x)); // 根据垂直速度设置动画参数 anim.SetFloat("velocityY", rb.velocity.y); anim.SetBool("isGround", physicsCheck.isGround); }
效果
现在落地跑步时,你会发现落地瞬间还是在执行落地下蹲动画,如果你希望马上打断下蹲动画,可以这里连接Exit满足条件会直接打断现在的动画状态,直接进入下一个状态
效果
源码
源码不出意外的话我会放在最后一节