public void spawnMembers(PlayerType owner, UnitDefinition unit, int numMembers) { this.owner = owner; playerFlagVisual.SetActive(this.owner == PlayerType.Player); enemyFlagVisual.SetActive(this.owner == PlayerType.Enemy1); influence.setColorToOwner(this.owner); UnitControlFlag unitFlag = controlSurface as UnitControlFlag; if (!!unitFlag) { } controlSurface.gameObject.SetActive(this.owner == PlayerType.Player); unitType = unit; influence.transform.localScale = new Vector3(unitType.InfluenceRange, unitType.InfluenceRange, 1f); CombatSceneManager combatManager = Toolbox.Get <InputManager>().CombatSceneManager; squadMembers = new List <SquadMember>(); for (int i = 0; i < numMembers; i++) { SquadMember newMember = Instantiate(unitType.PrefabOfUnit, combatManager.squadMemberContainer.transform); squadMembers.Add(newMember); newMember.OnUnitDied.AddListener(OnSquadMemberDied); newMember.setOwner(this.owner); newMember.TeleportTo(getRandomPositionInBounds(transform.position, influence.Zone.radius)); newMember.name = (owner == PlayerType.Player ? "PM-" : "EM-") + (unitType.PrefabOfUnit.name); } }
public void TakeDamage(int rawDamage) { if (_alreadyStarted == false) { return; } if (gameObject.activeSelf == false) { Debug.Log("Unit cannot take damage as it is already dead"); return; } var objectName = transform.parent.name; // reduce raw damage by Defense value. // Take a minimum of 1 damage. var finalDamage = Math.Max(rawDamage - unitDefinition.Defense, 1); _health -= finalDamage; _healthBar.SetHealth(_health / (float)unitDefinition.MaxHealth); if (_health <= 0) { transform.parent.gameObject.SetActive(false); CombatSceneManager combatManager = Toolbox.Get <InputManager>().CombatSceneManager; GameObject freshCorpse = Instantiate(unitDefinition.PrefabOfCorpse, combatManager.squadMemberContainer.transform); freshCorpse.transform.position = transform.position; OnUnitDied?.Invoke(this); } }
//Method: Awake //Purpose -- This called before Start, and allows the script //to order some of the members to be initialized (if needed); void Awake() { //isAtStart = true; //Initializing _instance to our current instance of //the GameManager object if (_instance == null) { _instance = this; } else { Destroy(gameObject); } }