Ejemplo n.º 1
0
        IEnumerator AttackTargetRepeatedly()
        {
            bool isAttackerAlive = GetComponent <HealthSystem>().healthAsPercentage >= Mathf.Epsilon;
            bool isTargetAlive   = target.GetComponent <HealthSystem>().healthAsPercentage >= Mathf.Epsilon;

            while (isAttackerAlive && isTargetAlive)
            {
                var   animationClip     = currentWeaponConfig.GetAttackAnimation();
                float animationClipTime = animationClip.length / character.GetAnimSpeedMultiplier();
                float timeToWait        = animationClipTime + currentWeaponConfig.GetMinTimeBetweenAnimationCycles();
                bool  isTimeToHitAgain  = Time.time - lastHitTime > timeToWait || lastHitTime == -1;
                if (isTimeToHitAgain)
                {
                    AttackTargetOnce();
                    lastHitTime = Time.time;
                }
                yield return(new WaitForSeconds(0.1f));
            }
        }