Ejemplo n.º 1
0
    void Update_Damage()
    {
        if (attackConf.damageMode == 2 && !isInCollision)
        {
            return;
        }

        if (damageIndex < damageConfArray.Length)
        {
            damageTimer += Time.deltaTime;
            DBSkillDamageConf damage = damageConfArray[damageIndex];

            if (!isBuffEnabled)
            {
                if (damageTimer >= damage.buffEnableTime)
                {
                    isBuffEnabled = true;
                    if (damage.buffID > 0)
                    {
                        actor.BeBuff(damage.buffID);
                    }
                }
            }

            //多久后开始攻击
            if (!isCurDamageEnd && damageTimer >= damage.startTime)
            {
                //进行多次攻击,第一次攻击立即触发
                attackTimer += Time.deltaTime;
                if (attackTimes == 0 || attackTimer >= damage.interval)
                {
                    DoDamage(damage);
                    attackTimer = 0f;
                    attackTimes++;                    //伤害次数+1
                    if (attackTimes >= damage.times)
                    {
                        isCurDamageEnd = true;
                    }
                }
            }

            if (isBuffEnabled && isCurDamageEnd)
            {
                damageTimer = 0f;
                attackTimes = 0;
                damageIndex++;                //这次damage完成,下个继续
                isCurDamageEnd = false;
                isBuffEnabled  = false;
            }
        }
        else
        {
            isAllDamageEnd = true;
        }
    }