void DeplaceTower(MoveableTower tower, SingleTowerPlacementArea area) { if (area == null) { return; } else { Vector3 targetPosition = area.transform.position; float dist = Vector3.Distance(tower.transform.position, targetPosition); if (dist < 0.1f) { tower.transform.position = targetPosition; IntVector2 gridPosition = area.WorldToGrid(targetPosition, dimensions); area.Occupy(gridPosition, dimensions); tower.currentBase = area; return; } else { tower.transform.LookAt(targetPosition, Vector3.up); tower.transform.position += tower.transform.forward * speed * Time.deltaTime; } } }
void ResetAllToFly() { towers = new List <MoveableTower>(); towers.Clear(); GameObject[] towersGO = GameObject.FindGameObjectsWithTag("MoveableTower"); foreach (GameObject towerGO in towersGO) { MoveableTower tower = towerGO.GetComponent <MoveableTower>(); tower.towerState = MoveableTower.State.Flying; tower.fireParticleSystem.gameObject.SetActive(false); } }
private void Update() { if (towerState == State.Attached) { if (this == manager.previousHit && this != manager.currentHit) { partner = manager.currentHit; fireParticleSystem.gameObject.SetActive(true); attackAffector.enabled = false; partner.transform.GetChild(1).GetChild(0).GetComponent <AttackAffector>().enabled = false; StartCoroutine(MoveParticle(fireParticleSystem.transform, partner.gameObject.transform)); } } }
private List <MoveableTower> GetCurrentTowers() { towers = new List <MoveableTower>(); towers.Clear(); GameObject[] towersGO = GameObject.FindGameObjectsWithTag("MoveableTower"); foreach (GameObject towerGO in towersGO) { if (towersGO != null && towerGO.GetComponent <MoveableTower>().towerState == MoveableTower.State.Flying) { MoveableTower tower = towerGO.GetComponent <MoveableTower>(); towers.Add(tower); } } return(towers); }
public void AttachTowers(Raycast raycast) { if (raycast.currentHit != null && raycast.previousHit != null) { previousHit = raycast.previousHit.gameObject.GetComponent <MoveableTower>(); currentHit = raycast.currentHit.gameObject.GetComponent <MoveableTower>(); if (currentHit.towerState == MoveableTower.State.Attached) { currentHit.AttachedToFlying(); raycast.currentHit = null; raycast.previousHit = null; } else if (previousHit != currentHit) { ResetAllToFly(); previousHit.SetAttached(); currentHit.SetAttached(); } } }