Beispiel #1
0
    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);
    }
Beispiel #2
0
    bool HitByRightPlayer(TypesOfPlayer whoAttacked, TypesOfPlayer[] playersWhoCanHit)
    {
        foreach (TypesOfPlayer player in playersWhoCanHit)
        {
            if (player == whoAttacked)
            {
                return(true);
            }
        }

        return(false);
    }
Beispiel #3
0
    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);
    }
Beispiel #4
0
    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;
        }
    }
Beispiel #5
0
    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);
        }
    }