Unity 2D角色动画状态切换

Wesley13
• 阅读 1023

一,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;

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerController : MonoBehaviour {

    private Rigidbody2D m_rg;

    public float MoveSpeed;
    public float JumpSpeed;

    //在角色下添加一个空物体
    //设置一个跳跃监测点
    public Transform CheckPoint;
    //设置一个跳跃监测半径
    public float CheckRadius;
    //设置一个跳跃监测层---角色与地面的检测
    public LayerMask WhatIsGround;

    //角色默认是否着地--true
    public bool isGround;

    private Animator Anim;


    void Start () {

        m_rg = gameObject.GetComponent<Rigidbody2D>();
        Anim = gameObject.GetComponent<Animator>();
    }
    
    // Update is called once per frame
    void Update () {
        //
        isGround = Physics2D.OverlapCircle(CheckPoint.position, CheckRadius, WhatIsGround);


        //------------------Input.GetAxisRaw没有小数值,只有整数,不会产生缓动------------------
        //角色水平移动
        //按住D键,判断如果大于0,则向右开始移动
        if (Input.GetAxisRaw("Horizontal") > 0)
        {
            m_rg.velocity = new Vector2(MoveSpeed, m_rg.velocity.y);

            //设置自身缩放的值
            transform.localScale = new Vector2(1f,1f);
        }
        //角色水平移动
        //按住A键,判断如果小于0,则向左开始移动
        else if (Input.GetAxisRaw("Horizontal") < 0)
        {
            m_rg.velocity = new Vector2(-MoveSpeed, m_rg.velocity.y);

            //如果new Vector2(-1f, 1f)  x值为负数,则图片进行反转显示
            transform.localScale = new Vector2(-1f, 1f);
        }
        else
        //角色水平移动
        //松开按键,判断如果等于0,则停止移动
        {
            m_rg.velocity = new Vector2(0, m_rg.velocity.y);
        }

        //角色按下空格键实现跳跃
        //禁止二连跳
        //要先判断角色是否在地面上,在地面上可以跳,不在地面上则不能跳
        if (Input.GetButtonDown("Jump")&& isGround)
        {

            m_rg.velocity = new Vector2(m_rg.velocity.x,JumpSpeed);
        }


        Anim.SetFloat("Speed", m_rg.velocity.x);
        Anim.SetBool("Grouned", isGround);
    }
}

Unity 2D角色动画状态切换 Unity 2D角色动画状态切换

点赞
收藏
评论区
推荐文章
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
小尉迟 小尉迟
1年前
Autodesk Maya 2023 M1 (玛雅2023)配置要求
AutodeskMaya2023forMac一款三维动画设计制作软件,Maya2023为三维动画制作、建模、仿真和渲染软件提供了一个功能强大的集成工具组合。可用于动画、环境、运动图形、虚拟现实和角色创建。完备的三维软件帮助您在建模、动画、照明和视觉特效中实
Chase620 Chase620
3年前
CSS3动画之逐帧动画
CSS3动画开发指南第二弹,剥丝抽茧为你解析逐帧动画,同时放送从实战经验中总结出来的逐帧动画使用技巧。什么是逐帧动画要了解CSS3逐帧动画,首先要明确什么是逐帧动画。看一下维基百科中的定义:定格动画,又名逐帧动画,是一种动画技术,其原理即将每帧不同的图像连续播放,从而产生动画效果。简而言之,实现逐帧动画需要两个条件:(1)相关联
Wesley13 Wesley13
3年前
JS动画与CSS动画
一、JS动画(setIntervalsetTimeOutrequestAnimationFrame)优点:  1)过程控制能力强。可以对动画工程进行精准的控制,暂停、取消、开始、终止都可以。  2)动画效果多、炫酷。有一些效果是CSS动画所不能实现的  3)兼容性比较高缺点:   1)由于JS是通过不断的操
Stella981 Stella981
3年前
CocosCreator 教你玩转Animation动画(第十四篇)
前言:Animation动画在游戏中是必不可少的,各种人物的走跑跳飞,以及各种表情动作,反正做游戏Animation动画是必修课了。这一篇章可以学会制作和控制各种动画,主要从一下几个方面介绍:1.动画制作流程;2.使用Animation动画编辑器制作动画;3.代码控制动画;一、动画制作的流程
Wesley13 Wesley13
3年前
Unity中Animator的2DSprite动画控制与使用
关于Unity动画系统几个名词概念,需要了解一下:Animator:动画控制器,控制Mecanim动画系统的接口。Animation:animation组件用于播放动画AnimationClip:动画剪辑片段,储存基于关键帧的动画,是用于Animation来播放动画。Animation编辑面板:此面板可以进行动画的调整,crtl6打开ani
Wesley13 Wesley13
3年前
Unity 动画系统 StateMachineBehaviour 动画状态机
👈返回目录(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.cnblogs.com%2F01zxs%2Fp%2F9987225.html)对于动画状态机,我们可以通过面板和代码来控制动画的切换。!(https://img2018.cnblogs.co
Wesley13 Wesley13
3年前
Unity 2D游戏开发教程之使用脚本实现游戏逻辑
Unity2D游戏开发教程之使用脚本实现游戏逻辑使用脚本实现游戏逻辑通过上一节的操作,我们不仅创建了精灵的动画,还设置了动画的过渡条件,最终使得精灵得以按照我们的意愿,进入我们所指定的动画状态。但是这其中还有一些问题。例如,我们无法使用键盘控制精灵当前要进入的动画状态,而且精
绣鸾 绣鸾
1年前
Character Animator 2024 for Mac,2D动画制作
是一款强大的2D角色动画制作软件,它可以将用户的创意转化为精彩的动画作品。该软件利用AdobeSenseiAI技术,帮助用户快速轻松地制作出栩栩如生的动画。CharacterAnimator2024的用户界面简洁直观,使得即使是非专业的动画制作人员也能快速
绣鸾 绣鸾
1年前
Moho Pro 14 for Mac(2D动画制作软件)
是一款专业的2D动画制作软件。它具有强大的功能和工具,适用于动画制作师、插画师和设计师。MohoPro14提供了丰富的动画功能,包括骨骼动画、形状插值、帧逐帧动画等。您可以使用骨骼工具来创建复杂的角色动画,通过设置骨骼关节和控制器,实现自然流畅的动作。形状