void OnCollisionStay(Collision cl) { if (stats.areaDamage == false) { if (cl.gameObject.tag == enemyBuildingTag) { stats.attackTimer += Time.deltaTime; if (stats.attackTimer >= (stats.rateOf)) { stats.attackTimer -= stats.rateOf; enemyBuildingStats = cl.gameObject.GetComponent(typeof(BuildingsStats)) as BuildingsStats; enemyBuildingStats.health -= stats.attack; } } else if (cl.gameObject.tag == enemyUnitTag) { stats.attackTimer += Time.deltaTime; if (stats.attackTimer >= (stats.rateOf)) { stats.attackTimer -= stats.rateOf; enemyUnitStats = cl.gameObject.GetComponent(typeof(UnitStats)) as UnitStats; enemyUnitStats.health -= stats.attack; } } } else { stats.attackTimer += Time.deltaTime; if (stats.attackTimer >= (stats.rateOf)) { stats.attackTimer -= stats.rateOf; Collider[] units = Physics.OverlapSphere(itsOwnTrasform.position, stats.area); foreach (Collider col in units) { if (col.attachedRigidbody != null && (col.gameObject.tag == enemyUnitTag || col.gameObject.tag == enemyBuildingTag)) { col.attachedRigidbody.AddExplosionForce(3000.0f, itsOwnTrasform.position, stats.area, 3.0f); if (col.gameObject.tag == enemyUnitTag) { enemyUnitStats = col.gameObject.GetComponent(typeof(UnitStats)) as UnitStats; enemyUnitStats.health -= stats.attack; } } } } } }
void Update() { if (b == false) { GameObject[] RedUnitList; RedUnitList = GameObject.FindGameObjectsWithTag("RedUnit"); GameObject[] BlueUnitList; BlueUnitList = GameObject.FindGameObjectsWithTag("BlueUnit"); GameObject[] RedBuildingList; RedBuildingList = GameObject.FindGameObjectsWithTag("RedBuilding"); GameObject[] BlueBuildingList; BlueBuildingList = GameObject.FindGameObjectsWithTag("BlueBuilding"); foreach (GameObject o in RedUnitList) { UnitStats stat = o.GetComponent(typeof(UnitStats)) as UnitStats; stat.active = false; } foreach (GameObject o in BlueUnitList) { UnitStats stat = o.GetComponent(typeof(UnitStats)) as UnitStats; stat.active = false; } foreach (GameObject o in RedBuildingList) { BuildingsStats stat = o.GetComponent(typeof(BuildingsStats)) as BuildingsStats; stat.active = false; } foreach (GameObject o in BlueBuildingList) { BuildingsStats stat = o.GetComponent(typeof(BuildingsStats)) as BuildingsStats; stat.active = false; } } else { GameObject[] RedUnitList; RedUnitList = GameObject.FindGameObjectsWithTag("RedUnit"); GameObject[] BlueUnitList; BlueUnitList = GameObject.FindGameObjectsWithTag("BlueUnit"); GameObject[] RedBuildingList; RedBuildingList = GameObject.FindGameObjectsWithTag("RedBuilding"); GameObject[] BlueBuildingList; BlueBuildingList = GameObject.FindGameObjectsWithTag("BlueBuilding"); foreach (GameObject o in RedUnitList) { UnitStats stat = o.GetComponent(typeof(UnitStats)) as UnitStats; stat.active = true; } foreach (GameObject o in BlueUnitList) { UnitStats stat = o.GetComponent(typeof(UnitStats)) as UnitStats; stat.active = true; } foreach (GameObject o in RedBuildingList) { BuildingsStats stat = o.GetComponent(typeof(BuildingsStats)) as BuildingsStats; stat.active = true; } foreach (GameObject o in BlueBuildingList) { BuildingsStats stat = o.GetComponent(typeof(BuildingsStats)) as BuildingsStats; stat.active = true; } } if (bb == true) { SceneManager.LoadScene("Main"); bb = false; } }
public void setStats(GameObject newUnit, char type, string unitClass, int level) { UnitStats unitS = newUnit.GetComponent(typeof(UnitStats)) as UnitStats; BuildingsStats buildingS = newUnit.GetComponent(typeof(BuildingsStats)) as BuildingsStats; if (type == 'u') { switch (unitClass) { case "warrior": unitS.category = "warrior"; unitS.active = true; unitS.health = 10; unitS.attack = 3; unitS.rateOf = 0.3; unitS.speed = 650; break; case "giant": unitS.category = "giant"; unitS.active = true; unitS.health = 180; unitS.attack = 4; unitS.rateOf = 3; unitS.speed = 300; unitS.areaDamage = true; unitS.area = 6.0f; break; case "archer": unitS.category = "archer"; unitS.active = true; unitS.health = 2; unitS.attack = 2; unitS.rateOf = 0.7; unitS.speed = 500; unitS.ranged = true; unitS.range = 4000.0f; unitS.projectile = projectile; unitS.attackBuildings = false; break; } } if (type == 'b') { switch (unitClass) { case "barrack": buildingS.category = "Spawner"; buildingS.unit = "warrior"; buildingS.health = 50; buildingS.active = true; buildingS.attack = 0; buildingS.rateOf = 0.7; break; case "giantBarrack": buildingS.category = "Spawner"; buildingS.unit = "giant"; buildingS.health = 120; buildingS.active = true; buildingS.attack = 0; buildingS.rateOf = 5.0; break; case "archerBarrack": buildingS.category = "Spawner"; buildingS.unit = "archer"; buildingS.health = 40; buildingS.active = true; buildingS.attack = 0; buildingS.rateOf = 1.3; break; } } }