Unity-黑暗之魂復(fù)刻-角色攻擊

新增攻擊動(dòng)畫層

1.在原來的BaseLayer基礎(chǔ)上,新增加LayerMaskWeight表示新增層的權(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)行控制了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容