// 대기중인 플레이어의 목표 지점을 최신화 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); } }
public void RemoveEntity(FieldPlayer pEntity) { m_EntityMap.Remove(pEntity.Id()); }