void Start() { activeTexture = GetComponent <ParticleSystem>(); unit = GetComponentInParent <PlayableUnitBehaviour>(); maxScale = activeTexture.transform.localScale; }
void UnitDies(PlayableUnitBehaviour attackedTarget) { if (attackedTarget.isDead == false) { attackedTarget.SetDead(); } attackedTarget = null; return; }
public void ClickState() { Ray ray = mainCamera.ScreenPointToRay(mousePosition); if (Physics.Raycast(ray, out hit, maxDistance, mask, QueryTriggerInteraction.Ignore)) { selectionBoxOrigin = mousePosition; selectionRect = new Rect(); if (hit.transform.gameObject.layer == LayerMask.NameToLayer("PlayableUnit")) { if (multipleUnitSelection) { MultipleUnitSelection(); return; } if (!isDoingSkill) { if (selectedUnit == null) { for (int i = 0; i < selectedUnits.Count; i++) { selectedUnits[i].isSelected = false; } selectedUnits.Clear(); selectedUnit = hit.transform.GetComponent <PlayableUnitBehaviour>(); } else { SelectedUnitClear(); } selectedUnit = hit.transform.GetComponent <PlayableUnitBehaviour>(); } } if (hit.transform.gameObject.layer == LayerMask.NameToLayer("Ground")) { if (!multipleUnitSelection && !isDoingSkill) { if (selectedUnit == null) { for (int i = 0; i < selectedUnits.Count; i++) { selectedUnits[i].isSelected = false; } selectedUnits.Clear(); } else { SelectedUnitClear(); } } } } isDoingSkill = false; }
void ClearUnit() { unitsCanAttack.Remove(selectedTarget.transform); distanceFromTarget = Mathf.Infinity; if (selectedTarget.isDead == false) { selectedTarget.SetDead(); } targetTransform = null; selectedTarget = null; closestObject = null; SetIdle(); }
public void SkillUpdate() { circleRenderer.enabled = true; hitColliders = Physics.OverlapSphere(transform.position, skillCircleRadius, attackMask); for (int i = 0; i < hitColliders.Length; i++) { PlayableUnitBehaviour attackedTarget = hitColliders[i].GetComponent <PlayableUnitBehaviour>(); attackedTarget.PlayableUnitTakeDamage(attack * 5, this); if (attackedTarget.hitPoints <= 0) { UnitDies(attackedTarget); return; } } hitColliders = null; isDoingSkill = false; circleRenderer.enabled = false; }
void FindClosestObject() { for (int i = 0; i < unitsCanAttack.Count; i++) { if (closestObject != null) { if (Vector3.Distance(transform.position, unitsCanAttack[i].position) <= Vector3.Distance(transform.position, closestObject.position)) { closestObject = unitsCanAttack[i]; } } else { closestObject = unitsCanAttack[i]; } } selectedTarget = closestObject.GetComponent <PlayableUnitBehaviour>(); targetTransform = closestObject; }
void SelectedUnitClear() { selectedUnit.isSelected = false; selectedUnit = null; }