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