示例#1
0
    IEnumerator SpawnEnemy()
    {
        CrossbowEnemy StartCrossbowParameter = PoolManager.Instance.GetPooledObject("CrossbowEnemy").GetComponent <CrossbowEnemy>();
        int           crossbowHealth         = StartCrossbowParameter.Health;
        int           crossbowDamage         = StartCrossbowParameter.Damage;
        HammerEnemy   StartHammerParameter   = PoolManager.Instance.GetPooledObject("HammerEnemy").GetComponent <HammerEnemy>();
        int           hammerHealth           = StartHammerParameter.Health;
        int           hammerDamage           = StartHammerParameter.Damage;

        int healthUpEnemy = 0;
        int damageUpEnemy = 0;
        int moneyFromWave = 0;

        while (true)
        {
            for (int i = 0; i < callEnemyWarriors; i++)
            {
                HammerEnemy Enemy = PoolManager.Instance.GetPooledObject("HammerEnemy").GetComponent <HammerEnemy>();

                Enemy.Health             = hammerHealth + healthUpEnemy;
                Enemy.Damage             = hammerDamage + damageUpEnemy;
                Enemy.transform.position = new Vector3(Random.Range(-20, 20), 0, Random.Range(30, 70));

                Enemy.gameObject.SetActive(true);
            }

            for (int i = 0; i < callEnemyWarriors; i++)
            {
                CrossbowEnemy Enemy = PoolManager.Instance.GetPooledObject("CrossbowEnemy").GetComponent <CrossbowEnemy>();

                Enemy.Health             = crossbowHealth + healthUpEnemy;
                Enemy.Damage             = crossbowDamage + damageUpEnemy;
                Enemy.transform.position = new Vector3(Random.Range(-20, 20), 0, Random.Range(30, 70));

                Enemy.gameObject.SetActive(true);
            }

            healthUpEnemy     += this.healthUpEnemy;
            damageUpEnemy     += this.damageUpEnemy;
            callEnemyWarriors += callEnemyWarriors;

            UiManager.Instance.AddMoney(moneyFromWave);
            yield return(new WaitForSeconds(timeSpawn));

            moneyFromWave = this.moneyFromWave;
        }
    }
示例#2
0
文件: Units.cs 项目: kaifarick/RTS
    protected virtual void Attack(float AttackDistance, string layerMask)
    {
        mask = LayerMask.GetMask(layerMask);
        var   cols           = Physics.OverlapSphere(transform.position, range, mask.value);
        float searchDistance = Mathf.Infinity;

        if (cols.Length > 0)
        {
            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;
                }
            }

            if (searchDistance < AttackDistance)
            {
                if (timeBetweenAtack <= 0)
                {
                    try
                    {
                        HammerEnemy units = currentCollider.gameObject.GetComponent <HammerEnemy>();
                        units.GetDamage(Damage);
                    }
                    catch
                    {
                        CrossbowEnemy crossbowEnemy = currentCollider.gameObject.GetComponent <CrossbowEnemy>();
                        crossbowEnemy.GetDamage(Damage);
                    }
                    timeBetweenAtack = 2f;
                }
                else
                {
                    timeBetweenAtack -= Time.deltaTime;
                }
            }
        }
    }
示例#3
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);
            }
        }
    }