void SwitchToNextOne(TypesOfPlayer activePlayer) { //get enum array System.Array enums = System.Enum.GetValues(typeof(TypesOfPlayer)); //then get next one, or if exceed length get the first int nextOne = (int)activePlayer + 1; if (nextOne >= enums.Length) { nextOne = 0; } //toActivate (next one) and toDeactivate (this active player) GameObject toActivate = players[(TypesOfPlayer)nextOne]; GameObject toDeactivate = players[activePlayer]; //set position and sprite flip toActivate.transform.position = toDeactivate.transform.position; toActivate.GetComponentInChildren <SpriteRenderer>().flipX = toDeactivate.GetComponentInChildren <SpriteRenderer>().flipX; //deactivate one player and active another toDeactivate.SetActive(false); toActivate.SetActive(true); }
bool HitByRightPlayer(TypesOfPlayer whoAttacked, TypesOfPlayer[] playersWhoCanHit) { foreach (TypesOfPlayer player in playersWhoCanHit) { if (player == whoAttacked) { return(true); } } return(false); }
public void SwitchPlayer(TypesOfPlayer activePlayer) { //only if one player if (twoPlayers) { return; } //check delay if (Time.time < timeLastSwitch) { return; } timeLastSwitch = Time.time + delaySwitch; //deactivate one and active another SwitchToNextOne(activePlayer); }
public void GetDamage(float damage, TypesOfPlayer whoAttacked) { //do something only if not already dead if (health <= 0) { return; } //remove shield if (shieldHealth > 0) { if (HitByRightPlayer(whoAttacked, whoRemoveShield)) { shieldHealth--; anim.SetTrigger("Hurt"); } //if removed, start refill delay if (shieldHealth <= 0) { timeLastShieldRefill = Time.time + delayShieldRefill; shield.SetActive(false); } return; } //then damage if (HitByRightPlayer(whoAttacked, whoKillEnemy)) { health -= damage; anim.SetTrigger("Hurt"); } //check if dead if (health <= 0) { Die(); return; } }
void InstantiateOnePlayer(TypesOfPlayer typeOfPlayer, Player prefab, Vector3 spawnPoint) { //check if is setted prefab if (prefab == null) { Debug.LogError("There is not " + typeOfPlayer.ToString() + " prefab"); return; } //instantiate and add to dictionary players[typeOfPlayer] = Instantiate(prefab).gameObject; //set position players[typeOfPlayer].transform.position = spawnPoint; //if not start player, deactivate it if (typeOfPlayer != startPlayer) { players[typeOfPlayer].SetActive(false); } }