Ejemplo n.º 1
0
    void Update()
    {
        var   cols           = Physics.OverlapSphere(transform.position, range, mask.value);
        float searchDistance = Mathf.Infinity;

        try
        {
            Collider currentCollider = cols[0];

            foreach (Collider col in cols)
            {
                float currentDist = Vector3.Distance(transform.position, col.transform.position);
                if (currentDist < searchDistance)
                {
                    currentCollider = col;
                    searchDistance  = currentDist;
                }
            }

            playerPos = currentCollider.gameObject.transform;

            if (searchDistance > AttackDistance)
            {
                transform.position = Vector3.MoveTowards(transform.position, playerPos.position, MoveSpeed * Time.deltaTime);
            }
            else
            {
                if (timeBetweenAtack <= 0)
                {
                    try
                    {
                        HammerFriend units = currentCollider.gameObject.GetComponent <HammerFriend>();
                        units.GetDamage(Damage);
                        UiManager.Instance.UnitUiRefresh();
                    }
                    catch
                    {
                        CrossbowFriendly crossbow = currentCollider.gameObject.GetComponent <CrossbowFriendly>();
                        crossbow.GetDamage(Damage);
                        UiManager.Instance.UnitUiRefresh();
                    }
                    timeBetweenAtack = 2f;
                }
                else
                {
                    timeBetweenAtack -= Time.deltaTime;
                }
            }
        }
        catch
        {
            float currentDist = Vector3.Distance(gameObject.transform.position, castle.transform.position);
            if (currentDist > AttackDistance)
            {
                transform.position = Vector3.MoveTowards(transform.position, castle.transform.position, MoveSpeed * Time.deltaTime);;
            }
        }
    }
Ejemplo n.º 2
0
    void SelectTarget()
    {
        if (target)
        {
            Destroy(target.gameObject);
        }

        Behaviour halo;

        if (unitFromUI != null)
        {
            halo         = (Behaviour)unitFromUI.GetComponent("Halo");
            halo.enabled = false;
        }

        if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out RaycastHit hit))
        {
            HammerFriend     hammerFriend     = hit.collider.GetComponent <HammerFriend>();
            CrossbowFriendly crossbowFriendly = hit.collider.GetComponent <CrossbowFriendly>();
            HammerEnemy      hammerEnemy      = hit.collider.GetComponent <HammerEnemy>();
            CrossbowEnemy    crossbowEnemy    = hit.collider.GetComponent <CrossbowEnemy>();

            if (hammerFriend)
            {
                selectedUnit = hammerFriend.gameObject;
                unitFromUI   = hammerFriend.gameObject;
                moveSpeed    = hammerFriend.MoveSpeed;

                halo         = (Behaviour)unitFromUI.GetComponent("Halo");
                halo.enabled = true;

                UiManager.Instance.UnitHealth = unitFromUI.GetComponent <HammerFriend>().Health;
                UiManager.Instance.UnitDamage = unitFromUI.GetComponent <HammerFriend>().Damage;
                UiManager.Instance.UnitUiRefresh();

                UnitUi.SetActive(true);
            }

            else if (crossbowFriendly)
            {
                selectedUnit = crossbowFriendly.gameObject;
                unitFromUI   = crossbowFriendly.gameObject;
                moveSpeed    = crossbowFriendly.MoveSpeed;

                halo         = (Behaviour)unitFromUI.GetComponent("Halo");
                halo.enabled = true;

                UiManager.Instance.UnitHealth = unitFromUI.GetComponent <CrossbowFriendly>().Health;
                UiManager.Instance.UnitDamage = unitFromUI.GetComponent <CrossbowFriendly>().Damage;
                UiManager.Instance.UnitUiRefresh();

                UnitUi.SetActive(true);
            }

            else if (hammerEnemy)
            {
                unitFromUI   = hammerEnemy.gameObject;
                halo         = (Behaviour)unitFromUI.GetComponent("Halo");
                halo.enabled = true;

                UiManager.Instance.UnitHealth = unitFromUI.GetComponent <HammerEnemy>().Health;
                UiManager.Instance.UnitDamage = unitFromUI.GetComponent <HammerEnemy>().Damage;
                UiManager.Instance.UnitUiRefresh();

                UnitUi.SetActive(true);
            }

            else if (crossbowEnemy)
            {
                unitFromUI   = crossbowEnemy.gameObject;
                halo         = (Behaviour)unitFromUI.GetComponent("Halo");
                halo.enabled = true;

                UiManager.Instance.UnitHealth = unitFromUI.GetComponent <CrossbowEnemy>().Health;
                UiManager.Instance.UnitDamage = unitFromUI.GetComponent <CrossbowEnemy>().Damage;
                UiManager.Instance.UnitUiRefresh();

                UnitUi.SetActive(true);
            }

            else
            {
                if (unitFromUI != null)
                {
                    halo         = (Behaviour)unitFromUI.GetComponent("Halo");
                    halo.enabled = false;
                }
                selectedUnit = null;
                UnitUi.SetActive(false);
            }
        }
    }