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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM