Unity 2D角色动画状态切换

一,Idle状态

  1,选中角色,打开Animation动画面板;

  2,新建一个动画面板Idle;

  3,拖动相关角色状态图片,实现动画

二,run状态

  1,新建一个动画面板run;

  2,拖动相关角色状态图片,实现动画

三,jump状态

  1,新建一个动画面板jump;

  2,拖动相关角色状态图片,实现动画

四,打开角色对象的动画编辑器面板Animator;

  1,设置默认动作为idle;

  2,设置idle过渡到run的过渡线 ,设置run过渡到idle的过渡线;

    勾掉Has exit Time选项;

    Transtion Duration(s),设置为0;

  3,设置idle过渡到ump的过渡线 ,设置ump过渡到idle的过渡线;

    勾掉Has exit Time选项;

    Transtion Duration(s),设置为0; 

  4,设置run过渡到ump的过渡线 ;

    勾掉Has exit Time选项;

    Transtion Duration(s),设置为0;

五,设置动画过渡参数

  1,设置一个float-----speed;

  2,设置一个bool-----brouned;

  3,idle过渡到run的过渡线,Condition选择speed-----Greater-----0.1;

  4,run过渡到idle的过渡线,Condition选择speed-----Less-----0.1;

  5,idle过渡到jump的过渡线,Condition选择Grouned-----false;

  6,jump过渡到idle的过渡线,Condition选择Grouned-----true;

  7,run过渡到jump的过渡线,Condition选择Grouned-----false;

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class PlayerController : MonoBehaviour { 6 7 private Rigidbody2D m_rg; 8 9 public float MoveSpeed; 10 public float JumpSpeed; 11 12 //在角色下添加一个空物体 13 //设置一个跳跃监测点 14 public Transform CheckPoint; 15 //设置一个跳跃监测半径 16 public float CheckRadius; 17 //设置一个跳跃监测层---角色与地面的检测 18 public LayerMask WhatIsGround; 19 20 //角色默认是否着地--true 21 public bool isGround; 22 23 private Animator Anim; 24 25 26 void Start () { 27 28 m_rg = gameObject.GetComponent<Rigidbody2D>(); 29 Anim = gameObject.GetComponent<Animator>(); 30 } 31 32 // Update is called once per frame 33 void Update () { 34 // 35 isGround = Physics2D.OverlapCircle(CheckPoint.position, CheckRadius, WhatIsGround); 36 37 38 //------------------Input.GetAxisRaw没有小数值,只有整数,不会产生缓动------------------ 39 //角色水平移动 40 //按住D键,判断如果大于0,则向右开始移动 41 if (Input.GetAxisRaw("Horizontal") > 0) 42 { 43 m_rg.velocity = new Vector2(MoveSpeed, m_rg.velocity.y); 44 45 //设置自身缩放的值 46 transform.localScale = new Vector2(1f,1f); 47 } 48 //角色水平移动 49 //按住A键,判断如果小于0,则向左开始移动 50 else if (Input.GetAxisRaw("Horizontal") < 0) 51 { 52 m_rg.velocity = new Vector2(-MoveSpeed, m_rg.velocity.y); 53 54 //如果new Vector2(-1f, 1f) x值为负数,则图片进行反转显示 55 transform.localScale = new Vector2(-1f, 1f); 56 } 57 else 58 //角色水平移动 59 //松开按键,判断如果等于0,则停止移动 60 { 61 m_rg.velocity = new Vector2(0, m_rg.velocity.y); 62 } 63 64 //角色按下空格键实现跳跃 65 //禁止二连跳 66 //要先判断角色是否在地面上,在地面上可以跳,不在地面上则不能跳 67 if (Input.GetButtonDown("Jump")&& isGround) 68 { 69 70 m_rg.velocity = new Vector2(m_rg.velocity.x,JumpSpeed); 71 } 72 73 74 Anim.SetFloat("Speed", m_rg.velocity.x); 75 Anim.SetBool("Grouned", isGround); 76 } 77}

点赞
收藏

评论区

加载中...

相关推荐

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

Autodesk Maya 2023 M1 (玛雅2023)配置要求

AutodeskMaya2023forMac一款三维动画设计制作软件,Maya2023为三维动画制作、建模、仿真和渲染软件提供了一个功能强大的集成工具组合。可用于动画、环境、运动图形、虚拟现实和角色创建。完备的三维软件帮助您在建模、动画、照明和视觉特效中实

CSS3动画之逐帧动画

CSS3动画开发指南第二弹,剥丝抽茧为你解析逐帧动画,同时放送从实战经验中总结出来的逐帧动画使用技巧。什么是逐帧动画要了解CSS3逐帧动画,首先要明确什么是逐帧动画。看一下维基百科中的定义:定格动画,又名逐帧动画,是一种动画技术,其原理即将每帧不同的图像连续播放,从而产生动画效果。简而言之,实现逐帧动画需要两个条件:(1)相关联

CocosCreator 教你玩转Animation动画(第十四篇)

前言:Animation动画在游戏中是必不可少的,各种人物的走跑跳飞,以及各种表情动作,反正做游戏Animation动画是必修课了。这一篇章可以学会制作和控制各种动画,主要从一下几个方面介绍:1.动画制作流程;2.使用Animation动画编辑器制作动画;3.代码控制动画;一、动画制作的流程

Unity中Animator的2DSprite动画控制与使用

关于Unity动画系统几个名词概念,需要了解一下:Animator:动画控制器,控制Mecanim动画系统的接口。Animation:animation组件用于播放动画AnimationClip:动画剪辑片段,储存基于关键帧的动画,是用于Animation来播放动画。Animation编辑面板:此面板可以进行动画的调整,crtl6打开ani

Unity 动画系统 StateMachineBehaviour 动画状态机

👈返回目录(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.cnblogs.com%2F01zxs%2Fp%2F9987225.html)对于动画状态机,我们可以通过面板和代码来控制动画的切换。!(https://img2018.cnblogs.co