黑魂复刻 201attack子状态

 在Animator基础动态层鼠标右键新建 State Machine  ,将这个子状态层更名为attack,把原来attack状态层的动画复制进去,删除原来的attack层

把三个攻击动画连到Exit上。idle动画删除

然后将这三个攻击动画选中修改 Animator State ,将Tag统一修改为attack

 在脚本代码ActorController里,将134行代码

private bool CheckState(string stateName,string layerName="Base Layer")
{
int layerIndex = anim.GetLayerIndex(layerName);
bool result = anim.GetCurrentAnimatorStateInfo(layerIndex).IsName(stateName);
return result;
}

复制一份,修改后用来获取动画中的标签

private bool CheckStateTag(string tagName, string layerName = "Base Layer")
{
int layerIndex = anim.GetLayerIndex(layerName);
bool result = anim.GetCurrentAnimatorStateInfo(layerIndex).IsTag(tagName);
return result;
}

88行控制攻击激活的判断代码

if (pi.attack&&CheckState("ground")&&canAttack)

改成:

 if (pi.attack&&(CheckState("ground")||CheckStateTag("attack"))&&canAttack)

 

 250行if (CheckState("attack1hC","attack")) ,attack参数删除,如果不删除则会报错:

 

218行,225-227行,235行,241-243行代码注释掉 ,把lerpTarget和anim.SetLayerWeight功能消掉

把OnAttackIdleEnter和OnAttackIdleUpdate这两个函数删除

 主要防止按键累积攻击

posted @ 2023-07-17 17:19  dontpanic1703  阅读(45)  评论(0)    收藏  举报