unity连击的实现
场景描述
在平时玩的RPG游戏中,经常会出现按下同一个按钮,会出现几个不同的连续的动作。今天来记录下这个功能的实现。
这里的人物图片感觉有点小,CSDN限制只能传2M以内的照片什么的。
这个就是四连击。在这里是一直点击一个按钮的,这里可以看见player的第一次攻击方向是向右的,第二次是向左的,第三次是向右的,第四次是一个拿剑向下杵下去的动作。
实现方法
先来看下代码,在PlaySkill里面
SkillTemplate finalsk = GetCurSkill(sk);
//动作发起着动画
inst.AnimState.SetAction(finalsk.actionId);
presk.sk = finalsk;
presk.IsComboSkill = IsCombSkill(finalsk);
presk.LoseComboTime = Time.time + finalsk.ComboMaxEffectTime;
presk.CoolDownTime = Time.time + finalsk.actionCd;
先得到最后一次攻击(也就是当前的动作)的技能ID,对它进行动画播放,实现之后就可以把这个技能置于为 presk.sk 即为预先一次的攻击。
之后就是判断技能冷却时间和在相对较短的时间里会出现下次攻击就会出现下个攻击。
再看看GetCurSkill的代码
if (presk == null || !presk.IsComboSkill || presk.sk.skillPos != sk.skillPos)
{
return sk;
}
if (presk.IsComboSkill && presk.sk.skillPos == sk.skillPos)
{
if (presk.CoolDownTime < Time.time && presk.LoseComboTime > Time.time)
{
int skillid = presk.sk.nextSkillid;
SkillTemplate newsk = GameDataManager.database.GetSkill(skillid);
if (newsk != null)
return newsk;
}
}
return sk;
其中,int skillid = presk.sk.nextSkillid;这句代码给了每次实现的ID轮回。第一个技能的下个技能ID是2,第二个技能下个技能ID是3,就这样一个轮回。