Esempio n. 1
0
 Transform GetClosestAndAvailablePlayer()
 {
     if ((distanceWithPlayerOne >= distanceWithPlayerTwo && playerTwoPawnController.IsTargetable()) ||
         !playerOnePawnController.IsTargetable())
     {
         return(playerTwoTransform);
     }
     else if ((distanceWithPlayerTwo >= distanceWithPlayerOne && playerOnePawnController.IsTargetable()) ||
              !playerTwoPawnController.IsTargetable())
     {
         return(playerOneTransform);
     }
     else
     {
         return(null);
     }
 }
Esempio n. 2
0
 private void Update()
 {
     UpdateCooldowns();
     UpdateBallTimeInHand();
     if (targetedPawn != null)
     {
         if (!targetedPawn.IsTargetable())
         {
             DisablePassPreview();
         }
     }
 }
Esempio n. 3
0
    protected void CheckDistanceAndAdaptFocus()
    {
        if (focusValues == null)
        {
            return;
        }
        //Checking who is in range
        if (distanceWithPlayerOne < focusValues.focusDistance && playerOnePawnController.IsTargetable() && transform.position.y > playerOneTransform.position.y - focusValues.maxHeightOfDetection && transform.position.y < playerOneTransform.position.y + focusValues.maxHeightOfDetection)
        {
            playerOneInRange = true;
        }
        else
        {
            playerOneInRange = false;
        }

        if (distanceWithPlayerTwo < focusValues.focusDistance && playerTwoPawnController.IsTargetable() && transform.position.y > playerTwoTransform.position.y - focusValues.maxHeightOfDetection && transform.position.y < playerTwoTransform.position.y + focusValues.maxHeightOfDetection)
        {
            playerTwoInRange = true;
        }
        else
        {
            playerTwoInRange = false;
        }

        //Unfocus player because of distance
        if (focusedPawnController != null)
        {
            if (focusedPawnController.transform.position.y < transform.position.y - focusValues.maxHeightOfDetection && focusedPawnController.transform.position.y > transform.position.y + focusValues.maxHeightOfDetection)
            {
                //Debug.Log("Changing to null due to height");
                ChangingFocus(null);
                playerOneInRange = false;
                playerTwoInRange = false;
                ChangeState(EnemyState.Idle);
                return;
            }

            if ((focusedPawnController.transform == playerOneTransform && (distanceWithPlayerOne > focusValues.unfocusDistance || !playerOnePawnController.IsTargetable())) ||
                ((focusedPawnController.transform == playerTwoTransform && (distanceWithPlayerTwo > focusValues.unfocusDistance || !playerTwoPawnController.IsTargetable()))))
            {
                ChangingFocus(null);
            }
        }

        //Changing focus between the two
        if ((playerOneInRange && playerOnePawnController.IsTargetable()) &&
            (playerTwoInRange && playerTwoPawnController.IsTargetable()) &&
            focusedPawnController != null && enemyState != EnemyState.Attacking)
        {
            if (focusedPawnController.transform == playerOneTransform && distanceWithPlayerOne - distanceWithPlayerTwo > focusValues.distanceBeforeChangingPriority)
            {
                ChangingFocus(playerTwoTransform);
            }
            else if (focusedPawnController.transform == playerTwoTransform && distanceWithPlayerTwo - distanceWithPlayerOne > focusValues.distanceBeforeChangingPriority)
            {
                ChangingFocus(playerOneTransform);
            }
        }

        //no focused yet ? Choose one
        if (((playerOneInRange && playerOnePawnController.IsTargetable()) ||
             (playerTwoInRange && playerTwoPawnController.IsTargetable())) &&
            focusedPawnController == null)
        {
            ChangingFocus(GetClosestAndAvailablePlayer());
        }
    }