Exemple #1
0
    void Attack()
    {
        if (AIBaseController.humanInSight)
        {
            if ((targetPosition - (Vector2)Human.humanRef.transform.position).magnitude > 0.75f)
            {
                //Debug.Log("Recalculando posicion");
                targetPosition = BasicMovementServer.redondearPosicion(Human.humanRef.transform.position);

                if (!base.CalculatePathTo(targetPosition))
                {
                    targetPosition = new Vector2(999, 999);
                }

                statusWhenLastPosition = robotAIStatus;
            }
        }
        else
        {
            robotAIStatus = RobotAIStatus.Search;
            //base.CalculatePathTo(AIBaseController.humanKnownPosition);
            wlkToRandomPositionAround(AIBaseController.humanKnownPosition, 8);

            statusWhenLastPosition = robotAIStatus;
        }
    }
Exemple #2
0
    void Patrol()
    {
        if (statusWhenLastPosition != RobotAIStatus.Patrol)
        {
            statusWhenLastPosition = RobotAIStatus.Patrol;

            patrolCounter = Time.time + 10;
        }
        else
        {
            if (Time.time < patrolCounter)
            {
                if (base.pathCompleted)
                {
                    wlkToRandomPositionAround(patrolPosition, 3);
                }
            }
            else
            {
                robotAIStatus = RobotAIStatus.Wander;
            }
        }

        if (AIBaseController.humanInSight)
        {
            robotAIStatus = RobotAIStatus.Attack;
        }
    }
Exemple #3
0
 void GlobalStatus()
 {
     if (AIBaseController.humanInSight && Human.humanRef.aggressiveMode)
     {
         base.ClearPath();
         robotAIStatus = RobotAIStatus.Escape;
     }
 }
Exemple #4
0
 void Search()
 {
     if (AIBaseController.humanInSight)
     {
         robotAIStatus = RobotAIStatus.Attack;
     }
     else if (base.pathCompleted)
     {
         robotAIStatus = RobotAIStatus.Scatter;
     }
 }
Exemple #5
0
    void Wander()
    {
        if (AIBaseController.humanInSight)
        {
            robotAIStatus = RobotAIStatus.Attack;
        }
        else if (base.pathCompleted)
        {
            wlkToRandomPositionAround(player.basicMovementServer.characterTransform.position, 8);

            statusWhenLastPosition = robotAIStatus;
        }
    }
Exemple #6
0
    void Escape()
    {
        //TODO: Buscar 10 puntos aleatorios alrededor del robot, y elegir el mas "seguro"
        if (base.pathCompleted)
        {
            distanciaAHumanoMaxima = 0;
            listaPosicionesHuida.Clear();

            for (int i = 0; listaPosicionesHuida.Count < 10; i++)
            {
                escapePosition = new Vector2((int)(transform.position.x + Random.Range(-8, 8)), (int)(transform.position.y + Random.Range(-8, 8)));

                if (Scenario.scenarioRef.isWalkable(escapePosition))
                {
                    listaPosicionesHuida.Add(escapePosition);

                    distanciaCalculada = (escapePosition - (Vector2)Human.humanRef.transform.position).magnitude;

                    if (distanciaCalculada > distanciaAHumanoMaxima)
                    {
                        distanciaAHumanoMaxima = distanciaCalculada;
                        posicionEscogida       = listaPosicionesHuida.Count - 1;
                    }
                }
            }

            CalculatePathTo(listaPosicionesHuida[posicionEscogida]);


            statusWhenLastPosition = robotAIStatus;
        }

        if (AIBaseController.humanInSight)
        {
            if (Human.humanRef.aggressiveMode)
            {
                escapeCounter = Time.time + 5;
            }
            else
            {
                robotAIStatus = RobotAIStatus.Attack;
            }
        }
        else if (Time.time > escapeCounter)
        {
            robotAIStatus = RobotAIStatus.Wander;
        }
    }
Exemple #7
0
    void Scatter()
    {
        if (statusWhenLastPosition != RobotAIStatus.Scatter)
        {
            int contadorEsquina = 0;

            statusWhenLastPosition = RobotAIStatus.Scatter;

            for (int i = 0; i < NetworkManager.networkManagerRef.listaJugadores.Length && i != base.player.id; i++)
            {
                if (NetworkManager.networkManagerRef.listaJugadores[i].enumPersonaje != EnumPersonaje.Humano)
                {
                    ++contadorEsquina;
                }
            }

            switch (contadorEsquina)
            {
            //TODO: ARREGLAR INDICESSSSSSS
            case 0:
                wlkToRandomPositionAround(new Vector2(4, 10), 0);
                break;

            case 1:
                wlkToRandomPositionAround(new Vector2(4, 3), 0);
                break;

            case 2:
                wlkToRandomPositionAround(new Vector2(15, 10), 0);
                break;

            case 3:
                wlkToRandomPositionAround(new Vector2(15, 3), 0);
                break;
            }
        }
        else
        {
            if (base.pathCompleted)
            {
                robotAIStatus = RobotAIStatus.Wander;
            }
        }
    }