Esempio n. 1
0
    void Evade()
    {
        if (!Human.humanRef.aggressiveMode)
        {
            // Si hay enemigos cercanos huimos de ellos
            if ((closestEnemyPosition - (Vector2)base.player.basicMovementServer.characterTransform.position).magnitude < 6)
            {
                repulsionVector = Vector2.zero;

                for (int i = 0; i < NetworkManager.networkManagerRef.listaJugadores.Length; i++)
                {
                    if (NetworkManager.networkManagerRef.listaJugadores[i].enumPersonaje != EnumPersonaje.Humano && !NetworkManager.networkManagerRef.listaJugadores[i].player.isDead)
                    {
                        auxVector        = ((Vector2)base.player.basicMovementServer.characterTransform.position - (Vector2)NetworkManager.networkManagerRef.listaJugadores[i].player.transform.position);
                        repulsionVector += auxVector.normalized * (1 / auxVector.magnitude);
                    }
                }

                if (base.pathCompleted || repulsionVector.sqrMagnitude > 1f)
                {
                    evadeTarget = base.wlkToRandomPositionAround((Vector2)base.player.basicMovementServer.characterTransform.position + (repulsionVector.normalized * 6), 3);
                }
            }
            else
            {
                humanAIStatus = HumanAIStatus.Wander;
            }
        }
        else
        {
            humanAIStatus = HumanAIStatus.Attack;
        }
    }
Esempio n. 2
0
 void Attack()
 {
     // Mientras este en modo agresivo se movera hacia los enemigos
     if (Human.humanRef.aggressiveMode && GameManager.gameManager.robotsAlive > 0)
     {
         if (((Vector2)base.player.basicMovementServer.characterTransform.position - closestEnemyPosition).sqrMagnitude > 4)
         {
             // Si la posicion objetivo difiere de la anterior recalculamos el camino
             if ((closestEnemyPosition - oldTargetPosition).sqrMagnitude > 2f)
             {
                 base.CalculatePathTo(closestEnemyPosition);
                 oldTargetPosition = closestEnemyPosition;
             }
         }
         else
         {
             // Si la posicion objetivo difiere de la anterior recalculamos el camino
             if ((closestEnemyPosition - oldTargetPosition).sqrMagnitude > 0.5f)
             {
                 base.CalculatePathTo(closestEnemyPosition);
                 oldTargetPosition = closestEnemyPosition;
             }
         }
     }
     else
     {
         humanAIStatus = HumanAIStatus.Wander;
     }
 }
Esempio n. 3
0
 void Wander()
 {
     if (!Human.humanRef.aggressiveMode)
     {
         // Comprobar enemigos cercanos
         if (!AIBaseController.humanInSight)
         {
             if (base.pathCompleted)
             {
                 wlkToRandomPositionAround(player.basicMovementServer.characterTransform.position, 8);
             }
         }
         else
         {
             humanAIStatus = HumanAIStatus.Evade;
             base.ClearPath();
         }
     }
     else if (GameManager.gameManager.robotsAlive > 0)
     {
         humanAIStatus = HumanAIStatus.Attack;
     }
 }