예제 #1
0
    public bool IsHitForwad(float distance, out PlayerController hitPlayer, CampTeam team)
    {
        bool             result      = false;
        PlayerController hitedPlayer = null;

        Vector3    origem      = transform.position + (transform.forward * 1.0f);
        Vector3    halfExtents = Vector3.one / 2f;
        Vector3    direction   = transform.forward;
        Quaternion orientation = transform.rotation;

        RaycastHit hitInfo;

        if (Physics.BoxCast(origem, halfExtents, direction, out hitInfo, orientation, distance, LayerMask.GetMask("SoccerPlayer")))
        {
            if (hitInfo.transform.GetComponent <PlayerController>() != null)
            {
                hitedPlayer = hitInfo.transform.GetComponent <PlayerController>();

                if (hitedPlayer.GetCampTeam() == team && hitedPlayer.isOk)
                {
                    result = true;
                }

                ExtDebug.DrawBoxCastOnHit(origem, halfExtents, orientation, direction, hitInfo.distance, Color.red);
            }


            //ExtDebug.DrawBoxCastOnHit(origem, halfExtents, orientation, direction, hitInfo.distance, Color.red);
        }

        //ExtDebug.DrawBox(origem, halfExtents, orientation, Color.red);
        hitPlayer = hitedPlayer;
        return(result);
    }
예제 #2
0
    //Animations Event Tryger
    //Estes eventos são chamados apartir das animações rerentes em quadros espesificos
    private void EvChangeDirectionStart()
    {
        player.SetKinematic();

        if (!player.IsMyBall())
        {
            return;
        }

        BallController.instance.SetBallProtectedTo(player);
        BallController.ChangeDirection();

        //Se o jogador selecionado do time adversario estiver proximo a mim na hora do lésinho, vou fazer ele tropeçar
        CampTeam adversary = player.GetCampTeam() == CampTeam.Team_A ? CampTeam.Team_B : CampTeam.Team_A;

        List <PlayerController> enemys = GameManager.instance.GetPlayersNearBall(adversary, 2.5f);

        if (enemys.Count > 0)
        {
            foreach (PlayerController enemy in enemys)
            {
                //Inimigo que estiver segurando o jogador nao sera afetado
                if (enemy.Locomotion.isJoint == false)
                {
                    enemy.Locomotion.TriggerStumb();
                }
            }
        }
    }
예제 #3
0
    /// <summary>
    /// Pesquisa e retorna o jogador do time e marcação pesqiusado. Tenha em mente
    /// que esta pesquisa pode retornar nula se o time adversário não tiver nenhum jogador nesta marcação
    /// </summary>
    /// <param name="campteam"></param>
    /// <param name="marcation"></param>
    /// <returns>Jogador na mesma marcação e ou nullo se não houver jogador do time nesta marcação</returns>
    public PlayerController GetPlayerInMarcation(CampTeam campteam, CampPlaceMarcation marcation)
    {
        CampTeam         otherCampTeam = campteam == CampTeam.Team_A ? CampTeam.Team_B : CampTeam.Team_A;
        TeamManager      team          = GetTeamManager(otherCampTeam);
        PlayerController enemy         = team.GetPlayerInMarcation(marcation);

        return(enemy);
    }
예제 #4
0
    /// <summary>
    /// Pesquisa e retorna o jogador do time adversario na mesma marcação que o jogador pesqiusado. Tenha em mente
    /// que e o jogador retornado nao precisa estar necessáriamente proxima e ou que esta pesquisa pode retornar nula
    /// se o time adversário não tiver nenhum jogador nesta marcação
    /// </summary>
    /// <param name="player"></param>
    /// <returns>Jogador asversario na mesma marcação e ou nullo se não houver jogador do time adversario nesta marcação</returns>
    public PlayerController GetEnemyPlayerInMarcation(PlayerController player)
    {
        CampTeam         campteam      = player.GetCampTeam();
        CampTeam         otherCampTeam = campteam == CampTeam.Team_A ? CampTeam.Team_B : CampTeam.Team_A;
        TeamManager      team          = GetTeamManager(otherCampTeam);
        PlayerController enemy         = team.GetPlayerInMarcation(player.GetPlaceMarcation());

        return(enemy);
    }
예제 #5
0
    public Transform GetMarcationPosition(PlayerController player, CampPlaceType placeType)
    {
        CampTeam           campTeam     = player.GetCampTeam();
        CampPlaceSide      side         = GetTeamPlaceSide(campTeam);
        CampPlaceMarcation marcation    = player.GetPlaceMarcation();
        CampPosition       campPosition = placesManager.GetPosition(side, marcation, placeType);

        return(campPosition.transform);
    }
예제 #6
0
    public static bool HasPlayerOk(this CampTeam team)
    {
        List <PlayerController> players = team.GetPlayers();

        if (players.Exists(r => r.isOk))
        {
            return(true);
        }
        return(false);
    }
예제 #7
0
 public static CampTeam Enemy(this CampTeam team)
 {
     if (team == CampTeam.Team_A)
     {
         return(CampTeam.Team_B);
     }
     else
     {
         return(CampTeam.Team_A);
     }
 }
예제 #8
0
    public List <PlayerController> GetPlayersNearBall(CampTeam team, float near)
    {
        TeamManager             manager = GetTeamManager(team);
        List <PlayerController> players = manager.Players;

        players.RemoveAll(r => r.isOk == false);
        //players.RemoveAll(r => r.Locomotion.inAir);


        players.RemoveAll(r => r.transform.Distance(BallController.instance.transform) > near);

        return(players);
    }
예제 #9
0
    public bool IsMyTeam(CampTeam team)
    {
        bool result = false;

        if (owner != null)
        {
            if (owner.GetCampTeam() == team)
            {
                result = true;
            }
        }

        return(result);
    }
예제 #10
0
    private TeamManager GetEnemyTeamManager(CampTeam team)
    {
        TeamManager manager = null;

        if (teamMananger1.team != team)
        {
            manager = teamMananger1;
        }
        else
        {
            manager = teamMananger2;
        }

        return(manager);
    }
예제 #11
0
    //Start MANUAL do componente.
    public void SetTeam(CampTeam team)
    {
        this.team = team;
        //Seleção primaria, selecionamos o jogador mais proximo da bola
        if (selectedPlayer == null)
        {
            PlayerController nearPlayer = gameMananger.GetPlayerNearBall(team);
            if (nearPlayer != null)
            {
                SelectPlayer(nearPlayer);
            }
        }

        ball.onSetMyOwner += OnBallSetOwner;
    }
예제 #12
0
    public PlayerController GetPlayerNear(PlayerController controller, CampTeam team)
    {
        TeamManager             manager = GetTeamManager(team);
        List <PlayerController> players = manager.Players;

        players.RemoveAll(r => r.isOk == false);
        // players.RemoveAll(r => r.Locomotion.inAir);

        if (team == controller.GetCampTeam())
        {
            players.Remove(controller);
        }

        float            min    = players.Min(r => r.Distance(controller));
        PlayerController result = players.FirstOrDefault(r => r.Distance(controller) == min);

        return(result);
    }
예제 #13
0
    /// <summary>
    /// Pesquisa em um time especifico pelo jogador mais proximo da bola.
    /// </summary>
    /// <param name="team">Time da pesquisa</param>
    /// <returns>Retorna o Jogador mais proximo da bola, Nunca retorna nulo a menos que o time não tenha jogador nenhum</returns>
    public PlayerController GetPlayerNearBall(CampTeam team)
    {
        TeamManager manager = GetTeamManager(team);

        List <PlayerController> players = manager.Players;

        players.RemoveAll(r => r.isOk == false);
        // players.RemoveAll(r => r.Locomotion.inAir);

        if (players.Count > 0)
        {
            float            min    = players.Min(r => r.transform.Distance(BallController.instance.transform));
            PlayerController player = players.FirstOrDefault(r => r.transform.Distance(BallController.instance.transform) == min);


            return(player);
        }
        else
        {
            return(null);
        }
    }
예제 #14
0
 public static GameOptionMode GetSelectionMode(this CampTeam team)
 {
     return(GameManager.instance.GetSelectionMode(team));
 }
예제 #15
0
 public static PlayerController GetPlayerNear(this PlayerController controller, CampTeam team)
 {
     return(GameManager.instance.GetPlayerNear(controller, team));
 }
예제 #16
0
    public PlayerInput GetPlayerinput(CampTeam team)
    {
        TeamManager manager = GetTeamManager(team);

        return(manager.playerInput);
    }
예제 #17
0
 public bool IsControllerCPU(CampTeam team)
 {
     return(team.GetInputType() == ControllerInputType.ControllerCPU);
 }
예제 #18
0
 public List <PlayerController> GetPlayers(CampTeam team)
 {
     return(GetTeamManager(team).Players);
 }
예제 #19
0
 public static PlayerInput GetInputs(this CampTeam team)
 {
     return(GameManager.instance.GetPlayerinput(team));
 }
예제 #20
0
    public PlayerController GetSelectedPlayer(CampTeam team)
    {
        TeamManager manager = GetTeamManager(team);

        return(manager.MultSelection.GetSelectedPlayer());
    }
예제 #21
0
    /// <summary>
    /// Pesquisa de quem é a entrada de jogador que controla determinado time
    /// </summary>
    /// <param name="team">Time a ser pesquisado </param>
    /// <returns>O tipo de controlador de entrada.</returns>
    public ControllerInputType GetControllerType(CampTeam team)
    {
        TeamManager manager = GetTeamManager(team);

        return(manager.inputType);
    }
예제 #22
0
 public static List <PlayerController> GetPlayers(this CampTeam team)
 {
     return(GameManager.instance.GetPlayers(team));
 }
예제 #23
0
 public static ControllerInputType GetInputType(this CampTeam team)
 {
     return(GameManager.instance.GetControllerType(team));
 }
예제 #24
0
 public static bool IsIA(this CampTeam team)
 {
     return(GameManager.instance.IsIA(team));
 }
예제 #25
0
    public GameOptionMode GetSelectionMode(CampTeam team)
    {
        TeamManager manager = GetTeamManager(team);

        return(manager.selectionMode);
    }
예제 #26
0
 public static bool IsController2(this CampTeam team)
 {
     return(GameManager.instance.IsController2(team));
 }
예제 #27
0
 public static bool IsMyBall(this CampTeam team)
 {
     return(BallController.instance.IsMyTeam(team));
 }
예제 #28
0
 public static PlayerController GetSelectedPlayer(this CampTeam team)
 {
     return(GameManager.instance.GetSelectedPlayer(team));
 }
예제 #29
0
    public CampPlaceSide GetTeamPlaceSide(CampTeam team)
    {
        TeamManager manager = GetTeamManager(team);

        return(manager.side);
    }