Exemple #1
0
    // Update is called once per frame
    void Update()
    {
        switch (mode)
        {
        case Mode.First:
            target = tower.GetTarget();
            break;

        case Mode.Closest:
            if (target)
            {
                if (timer < 0)
                {
                    target = tower.GetClosestTarget();
                    timer += cooldown;
                }
                timer -= Time.deltaTime;
            }
            else
            {
                target = tower.GetClosestTarget();
                if (target)
                {
                    timer = cooldown;
                }
            }
            break;

        case Mode.Lowest:
            if (target)
            {
                if (timer < 0)
                {
                    target = tower.GetLowestHealtTarget();
                    timer += cooldown;
                }
                timer -= Time.deltaTime;
            }
            else
            {
                target = tower.GetLowestHealtTarget();
                if (target)
                {
                    timer = cooldown;
                }
            }
            break;
        }

        if (target)
        {
            agent.isStopped = false;
            agent.SetDestination(target.transform.position);
            if (Vector3.SqrMagnitude(transform.position - target.transform.position) < radie * radie)
            {
                if (target.healtt < target.maxHealt)
                {
                    target.healtt += helande * Time.deltaTime;
                }
            }
        }
        else
        {
            agent.isStopped = true;
        }
    }
Exemple #2
0
    // Update is called once per frame
    void Update()
    {
        switch (mode)
        {
        case Mode.First:
            target = tower.GetTarget();
            break;

        case Mode.Closest:
            if (target)
            {
                if (timer < 0)
                {
                    target = tower.GetClosestTarget();
                    timer += cooldown;
                }
                timer -= Time.deltaTime;
            }
            else
            {
                target = tower.GetClosestTarget();
                if (target)
                {
                    timer = cooldown;
                }
            }
            break;

        case Mode.Lowest:
            if (target)
            {
                if (timer < 0)
                {
                    target = tower.GetLowestHealtTarget();
                    timer += cooldown;
                }
                timer -= Time.deltaTime;
            }
            else
            {
                target = tower.GetLowestHealtTarget();
                if (target)
                {
                    timer = cooldown;
                }
            }
            break;
        }

        if (target)
        {
            agent.isStopped = false;
            agent.SetDestination(target.transform.position);
            if (Vector3.SqrMagnitude(transform.position - target.transform.position) < radie * radie)
            {
                if (target.speedOfset > -0.5)
                {
                    target.speedOfset = Ofset;
                }
            }
            else if (Vector3.SqrMagnitude(transform.position - target.transform.position) > radie * radie && Vector3.SqrMagnitude(transform.position - target.transform.position) < (radie + 2) * (radie + 2))
            {
                target.speedOfset = 0;
            }
        }
        else
        {
            agent.isStopped = true;
        }
    }