思路来源于:(155条消息) unity连招系统_小泽承平的博客-CSDN博客
原理:判断给定时间间隔内玩家有没有触发攻击,如果有则进入下一个动作,如果没有则自动返回到Exit状态 ,然后回到any State指向的初始动画。
在原方法的基础上做了一点改进,连线的步骤也省略了。
我这里实现的是三连击,把animator里的三个攻击动画都连到Exit上,如下图。
下面是代码:
List<string> attackAnimList = new List<string>(new string[] { "attack1", "attack2", "attack3" });//将攻击动画放数组里
public int currentAttack = 0;//连招计数
public int attackNum = 3;//连招数量
public float restTime;//连招重置时间
private float timer;
连招的数量attackNum根据实际需求修改,我这里是3连招,重置时间也根据喜好设置。
void Update()
{
if (Input.GetMouseButtonDown(0) && currentAttack < attackNum && !anim.GetCurrentAnimatorStateInfo(0).IsName(attackAnimList[currentAttack]))
{
anim.Play(attackAnimList[currentAttack]);
currentAttack++;
timer = 0f;
}
if (currentAttack > 0)
{
timer += Time.deltaTime;
if (timer >= restTime)//超过时间间隔
{
currentAttack = 0;
}
}
if (currentAttack == attackNum)//当到达最后一个动作的时候重置
{
currentAttack = 0;
}
}