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; } }
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; } } } }
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); } } }