新增攻擊動(dòng)畫層
1.在原來的BaseLayer基礎(chǔ)上,新增加LayerMask,Weight表示新增層的權(quán)重,Blending我們設(shè)置成override。
2.創(chuàng)建avatar mask,先創(chuàng)建一個(gè)全身的avatar mask
3.將attack層中的avatarmask設(shè)置為我們創(chuàng)建的
4.在parameter中添加attack的Trigger,在玩家按下keyC的時(shí)候用triggerOnceSignal將attack設(shè)置為true,在ActorController中當(dāng)attack為true時(shí),將anim的attack的Trigger設(shè)置為true。
5.我們給狀態(tài)的轉(zhuǎn)換添加FSMOnEnter,在attack1hAEnter的時(shí)候我們將通過anim.SetLayerWeight設(shè)置我們layerMask的weight權(quán)重
public void OnAttack1hAEnter()
{
anim.SetLayerWeight(anim.GetLayerIndex("attack"),1.0f);
}
public void OnAttackIdle()
{
anim.SetLayerWeight(anim.GetLayerIndex("attack"),0);
}
6.在角色jump的時(shí)候不能攻擊,在角色攻擊的時(shí)候不能wasd輸入,給角色攻擊加上這些限制。
連擊
1.添加新的動(dòng)畫通過trigger觸發(fā)新的狀態(tài)
2.調(diào)整state轉(zhuǎn)換的判斷順序,先判斷是否連擊,再判斷是否回到idle
3.在攻擊動(dòng)畫進(jìn)行到中間的時(shí)候再可以接受下一段攻擊判斷,通過添加動(dòng)畫Event來解決。在動(dòng)畫播放到Event的時(shí)候ResetTrigger,這樣玩家想要連擊必須在Event后再此按鍵。
第三段動(dòng)畫向前移動(dòng)
1.因?yàn)槲覀兊腃ollider與Animator不在一個(gè)物體上,我們不能簡單地用Animator中的RootMotion。
2.我們要在Animator的物體上加一個(gè)腳本,獲取到RootMotion,將pos的移動(dòng)獲取然后賦值給Collider物體。
在OnAnimatorMove中控制RootMotion
private Animator anim;
private void Awake()
{
anim = GetComponent<Animator>();
}
public void OnAnimatorMove()
{
SendMessageUpwards("OnUpdateRM",anim.deltaPosition);
}
3.在ActorController中將RigidBody的Position直接累加一個(gè)deltaPosition
動(dòng)畫水平映射
通過勾選Animator中state的Mirror選項(xiàng),動(dòng)畫將以鏡面反射的效果在人物另一邊進(jìn)行播放。
通過代碼控制:將Mirror后面的parameter進(jìn)行勾選,我們就可以通過parameter中的一個(gè)bool對此選項(xiàng)進(jìn)行控制了。