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. 效果图

  • 相关阅读:
    88. Merge Sorted Array
    87. Scramble String
    86. Partition List
    85. Maximal Rectangle
    84. Largest Rectangle in Histogram
    83. Remove Duplicates from Sorted List
    82. Remove Duplicates from Sorted List II
    81. Search in Rotated Sorted Array II
    80. Remove Duplicates from Sorted Array II
    计算几何——点线关系(叉积)poj2318
  • 原文地址:https://www.cnblogs.com/Fflyqaq/p/10775046.html
Copyright © 2011-2022 走看看