// 대기중인 플레이어의 목표 지점을 최신화
    public void UpdateTargetsOfWaitingPlayers()
    {
        foreach (var item in players)
        {
            PlayerBase pb = item.GetComponent <PlayerBase>();
            if (pb.Role() != "GoalKeeper")
            {
                FieldPlayer fp = item.GetComponent <FieldPlayer>();

                if (fp.GetFSM() == null)
                {
                    Debug.LogError("No FSM");
                }

                // 본래의 위치로 돌아가게 한다.
                if (fp.GetFSM().IsInstate(Wait.instance) || fp.GetFSM().IsInstate(ReturnToHomeRegion.instance))
                {
                    if (fp.Team().teamColor == TeamColor.Blue)
                    {
                        fp.Steering().SetTarget((fp.Team().initialRegion[fp.Id() - 6]));
                    }
                    else
                    {
                        fp.Steering().SetTarget((fp.Team().initialRegion[fp.Id() - 1]));
                    }
                }
            }
        }
    }
    // 패스 요청
    public void RequestPass(FieldPlayer requester)
    {
        // 패스 요청 빈도
        const float requestFrequency = 0.7f;
        float       randFloat        = UnityEngine.Random.Range(0f, 1f);

        if (randFloat > requestFrequency)
        {
            return;
        }

        // 가로챔 당할 걱정 없을 경우 패스
        if (IsPassSafeFromAllOpponents(ControllingPlayer().transform.position, requester.transform.position, requester.gameObject, Prm.instance.MaxPassingForce))
        {
            MessageDispatcher_CH4.instance.DispatchMessage(0f, ControllingPlayer().GetComponent <FieldPlayer>().Id(), requester.Id(), SoccerMessages.Msg_PassToMe, requester.transform);
        }
    }
Пример #3
0
 public void RemoveEntity(FieldPlayer pEntity)
 {
     m_EntityMap.Remove(pEntity.Id());
 }