zoukankan      html  css  js  c++  java
  • Unity---动画系统学习(3)---使用状态机来实现走、跑、转弯等的动画切换

    1. 初始设置

    动画学习笔记(2)中方法,把动画全都切割好。
    拖进状态机并设置箭头。并设置具体箭头触发的事件。



    在状态机左侧中添加参数,Float和Int类型参数只能从-1~1之间变化
    Float:Speed,控制行走
    Bool:IsSpeedUp,控制加速
    Float:Horizontal,控制转弯

    2. 代码设置

    	private int speedID = Animator.StringToHash("Speed");
        private int isSpeedID = Animator.StringToHash("IsSpeedUp");
        private int horizontalID = Animator.StringToHash("Horizontal");
    
        private Animator anim;
    	
    	void Start () {
            anim = gameObject.GetComponent<Animator>();
    	}
    	
    	void Update () {
            anim.SetFloat(speedID, Input.GetAxis("Vertical"));
            if (Input.GetKeyDown(KeyCode.LeftShift))
            {
                anim.SetBool(isSpeedID, true);
            }
            else if (Input.GetKeyUp(KeyCode.LeftShift))
            {
                anim.SetBool(isSpeedID, false);
            }
            anim.SetFloat(horizontalID, Input.GetAxis("Horizontal"));
    	}
    

    anim.SetFloat();:给参数赋值

    Input.GetAxis("Vertical");:Unity中自带的按键返回函数,当按下W和S键或↑↓键时,会返回正负的小数,按键时间长短影响大小。
    像Vertical这样的虚拟轴在Edit---Project Setting---Input中设置

    Animator.StringToHash;:把Speed字符串转化为HashID。
    private int speedID = Animator.StringToHash("Speed");
    anim.SetFloat(speedID, Input.GetAxis("Vertical"));
    ==>等效于
    anim.SetFloat("Speed", Input.GetAxis("Vertical"));
    这样转换后更不容易出错,更高效,推荐使用!!!!

    3. 效果图

  • 相关阅读:
    如何修改dmesg log buffer size
    phpmyadmin的初始账号密码是多少
    DirectFB 之 FillRectangle 绘制矩形
    DFB系列 之 Clear清空surface缓存
    DFB系列 之 Flip()更新buffe
    DFB系列 之 Bilp叠加
    DFB系列 之 SetCooperativeLevel协作级别
    DirectFB 之 实例图像不断右移
    DirectFB 之 环境配置
    DirectFB 之 简介
  • 原文地址:https://www.cnblogs.com/Fflyqaq/p/10775046.html
Copyright © 2011-2022 走看看