Ejemplo n.º 1
0
    void FlagCapture()
    {
        aiFlagCollider     = Physics.OverlapSphere(transform.position, flagRadius, aiLayer);
        playerFlagCollider = Physics.OverlapSphere(transform.position, flagRadius, playerLayer);

        for (int i = 0; i < aiFlagCollider.Length; i++)
        {
            if (aiFlagCollider[i].tag == "E_Aldeano")
            {
                aiOnTheFlag = i;
            }
        }
        for (int i = 0; i < playerFlagCollider.Length; i++)
        {
            if (playerFlagCollider[i].tag == "P_Aldeano")  //---------------------------------CAMBIAR / INCLUIR TAG VILLAGER ENEMIGO
            {
                playerOnTheFlag = i;
            }
        }

        if (aiOnTheFlag > -1 && playerOnTheFlag == -1)
        {
            flagState = Zone.STATE.AI;
        }
        else if (playerOnTheFlag > -1 && aiOnTheFlag == -1)
        {
            flagState = Zone.STATE.Player;
        }
        else
        {
            aiOnTheFlag     = -1;
            playerOnTheFlag = -1;
        }
    }
Ejemplo n.º 2
0
    void Update()
    {
        RallyPoint();

        //UIItems();
        UpgradeSlot();


        //timer resetea cada vez que cambia de dueño la zona
        if (lastBuildingState != buildingState)
        {
            currentTime = cooldownToSpawn;
        }

        //el timer se ejecuta si la bandera no está en modo neutral y si las lista de los objectos no ha llegado a su máximo
        if (buildingState == Zone.STATE.Player)
        {
            if (playerList.Count < maxTroops)
            {
                currentTime -= Time.deltaTime;
            }
        }
        if (buildingState == Zone.STATE.AI)
        {
            if (enemyList.Count < enemyMaxTroops)
            {
                currentTime -= Time.deltaTime;
            }
        }

        //spawns dependiendo de quien controla la zona
        PlayerSpawn();
        AISpawn();

        if (spawnDirectly) //Spawn de unidades inicial, sin tener ue esperar X tiempo a cada reaparición de unidades
        {
            #region Spawn when game starts
            GameObject directSpawnObject = objectPooler.GetPooledObject(playerObjectPoolTag);
            directSpawnObject.GetComponent <Unit_Base>().buildingTag = gameObject.tag;

            if (directSpawnObject != null)
            {
                //listas a añadir el GameObject creado
                playerList.Add(directSpawnObject);
                objectPooler.activePooledObjects.Add(directSpawnObject);
                //sitio en el que aparecer
                directSpawnObject.transform.position = spawnPoint.position;
                directSpawnObject.transform.rotation = spawnPoint.rotation;

                //que se vea el objecto
                directSpawnObject.SetActive(true);
                //Donde se mueve al aparecer
                directSpawnObject.GetComponent <Unit_Base>().MoveAt(GetRandomPosition());
            }
            #endregion

            instantUnits++;
            print("spawns");
        }
        if (instantUnits >= startUnits)
        {
            spawnDirectly = false;
        }

        ;

        //timer dueño (realción con la primera condición)
        lastBuildingState = buildingState;
    }