public void Attack(AttackTypes attackType) { if (attackType == AttackTypes.Sweep) { List <GameObject> enemiesHit = new List <GameObject>(); List <Vector3> coneVectors = getConeVectors(this.transform.position, this.transform.forward, 45); foreach (Vector3 v in coneVectors) { RaycastHit[] enemiesInRange = Physics.RaycastAll(transform.position, (v - transform.position).normalized, 2); for (int i = 0; i < enemiesInRange.Length; i++) { if (enemiesInRange[i].transform.gameObject.name == "Monster" || enemiesInRange[i].transform.gameObject.name == "Boss") { if (!enemiesHit.Contains(enemiesInRange[i].transform.gameObject)) { enemiesHit.Add(enemiesInRange[i].transform.gameObject); } } } } foreach (GameObject m in enemiesHit) { if (m.name == "Monster") { MonsterController monster = m.GetComponent <MonsterController>(); monster.DamageTaken(sweepAttackDamage); } else if (m.name == "Boss") { GameController.gameController.BossHP.value -= sweepAttackDamage; } } } if (attackType == AttackTypes.Normal) { RaycastHit hit; if (Physics.Raycast(transform.position, transform.forward, out hit, 1.5f)) { if (hit.transform.gameObject.name == "Monster") { hit.transform.GetComponent <MonsterController>().DamageTaken(singleTargetDamage); } else if (hit.transform.gameObject.name == "Boss") { GameController.gameController.BossHP.value -= singleTargetDamage; } } } if (attackType == AttackTypes.Fireball) { playerMana.value -= 80; Vector3 FireballSpawnPosition = this.transform.position; FireballSpawnPosition.y = 4; Instantiate(FireballPrefab, FireballSpawnPosition, this.transform.rotation); } }