Beispiel #1
0
    protected virtual void LocalUpdate()
    {
        if (_enemyMob != null && !_enemyMob.IsAlive())
        {
            _enemyMob      = null;
            _currentTarget = null;
        }

        if (_enemyMob == null)
        {
            _enemyMob = FindEnemyInRadius(viewRange);

            _currentTarget = _enemyMob != null ? _enemyMob.transform : _enemyMainBuilding.transform;

            _navMeshAgent.SetDestination(_currentTarget.position);
            _navMeshAgent.isStopped = false;
        }

        if (IsTargetOnAttackDistance())
        {
            transform.DOLookAt(_currentTarget.transform.position, 0.5f);
            _navMeshAgent.isStopped = true;


            if (_enemyMob != null && _skill != null && _skill.IsReady() && _health.currentMana >= _skill.manaCost)
            {
                _skill.UseSkill();
                return;
            }

            StartCoroutine(Attacking());
        }
    }