Exemplo n.º 1
0
    IEnumerator DoDamage(CharaterStats stats, float delay)
    {
        yield return(new WaitForSeconds(delay));

        stats.TakeDamage(myStats.damage.GetValue());
        if (stats.currentHealth <= 0)
        {
            InCombat = false;
        }
    }
Exemplo n.º 2
0
 public void Attack(CharaterStats targetStats)
 {
     if (attackCooldown <= 0f)
     {
         StartCoroutine(DoDamage(targetStats, attackDelay));
         if (OnAttack != null)
         {
             OnAttack();
         }
         attackCooldown = 1f / attackSpeed;
         InCombat       = true;
         lastAttackTime = Time.time;
     }
 }
Exemplo n.º 3
0
    // Update is called once per frame
    void Update()
    {
        float distance = Vector3.Distance(target.position, transform.position);

        if (distance <= lookRadius)
        {
            agent.SetDestination(target.position);
            if (distance <= agent.stoppingDistance)
            {
                CharaterStats targetStats = target.GetComponent <CharaterStats>();
                if (targetStats != null)
                {
                    combat.Attack(targetStats);
                }

                FaceTarget();
            }
        }
    }
Exemplo n.º 4
0
 void Start()
 {
     playerManager = PlayerManager.instance;
     myStats       = GetComponent <CharaterStats>();
 }
Exemplo n.º 5
0
 void Start()
 {
     myStats = GetComponent <CharaterStats>();
 }