一骄噪、模型設(shè)置相關(guān)
1.動畫系統(tǒng)和節(jié)點的選擇
2.動畫片段
動畫片段切割
二膛堤、動畫控制器相關(guān)
1.控制器
2.場景設(shè)置
模型參數(shù)設(shè)置
三垮媒、控制腳本
public void move2(Vector2 v) {
Vector3 dir = new Vector3 (v.x,0,v.y);
Quaternion quaDir = Quaternion.LookRotation(dir,Vector3.up);
// 判段當(dāng)前朝向
float curRotateY = transform.rotation.eulerAngles.y;
// 目標(biāo)朝向
float destRotateY = quaDir.eulerAngles.y;
AnimatorStateInfo stateinfo = anim.GetCurrentAnimatorStateInfo(0);
//string name = anim.GetCurrentAnimatorClipInfo (0) [0].clip.name;
Debug.Log ("destRotateY :" + destRotateY + " curRotateY: " + curRotateY);
// 誤差控制 ###誤差越大 開始轉(zhuǎn)彎和恢復(fù)轉(zhuǎn)彎 rotate帶來的影響越小###
if (Mathf.Abs (curRotateY - destRotateY) <= 20) {
if (stateinfo.IsName("idle")) {
Debug.LogError ("走路idle");
anim.Play ("zou");
}
if (stateinfo.IsName ("zhuanzheng")) {
//靠狀態(tài)機(jī)變化來切換動畫
Debug.LogError ("走路zhuanzheng");
anim.SetInteger ("zhuan2zou",1);
}
if (stateinfo.IsName ("zhuanfan")) {
//靠狀態(tài)機(jī)變化來切換動畫
Debug.LogError ("走路zhuanfan");
anim.SetInteger ("zhuan2zou",2);
}
// ###加入開始轉(zhuǎn)彎動作補(bǔ)充的兩個 start ###
if (stateinfo.IsName ("zoustart")) {
//靠狀態(tài)機(jī)變化來切換動畫
Debug.LogError ("走路zhuanfan");
anim.SetInteger ("zhuan2zou",4);
}
if (stateinfo.IsName ("zoustart1")) {
//靠狀態(tài)機(jī)變化來切換動畫
Debug.LogError ("走路zhuanfan");
anim.SetInteger ("zhuan2zou",3);
}
// ###加入開始轉(zhuǎn)彎動作補(bǔ)充的兩個 end ###
} else {
if (Mathf.Abs (curRotateY - destRotateY) <= 180) {
if (curRotateY < destRotateY) {
//
anim.SetInteger ("zhuan2zou", 0);
//anim.Play ("zhuanzheng");
if (!stateinfo.IsName ("zhuanzheng") && !stateinfo.IsName ("zoustart1"))
anim.Play ("zoustart1");
Debug.LogError ("正轉(zhuǎn)圈 ");
} else if (curRotateY > destRotateY) {
anim.SetInteger ("zhuan2zou", 0);
//anim.Play ("zhuanfan");
if (!stateinfo.IsName ("zhuanfan") && !stateinfo.IsName ("zoustart"))
anim.Play ("zoustart");
Debug.LogError ("反轉(zhuǎn)圈");
}
} else {
if (curRotateY < destRotateY) {
anim.SetInteger ("zhuan2zou", 0);
//anim.Play ("zhuanfan");
if (!stateinfo.IsName ("zhuanfan") && !stateinfo.IsName ("zoustart"))
anim.Play ("zoustart");
Debug.LogError ("反轉(zhuǎn)圈");
} else if (curRotateY > destRotateY) {
anim.SetInteger ("zhuan2zou", 0);
//anim.Play ("zhuanzheng");
if (!stateinfo.IsName ("zhuanzheng") && !stateinfo.IsName ("zoustart1"))
anim.Play ("zoustart1");
Debug.LogError ("正轉(zhuǎn)圈 ");
}
}
}
}