黑魂复刻 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这两个函数删除

主要防止按键累积攻击
浙公网安备 33010602011771号