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"));
這樣轉換后更不容易出錯,更高效,推薦使用!!!!