private IEnumerator SearchTargetProcess() { float Angle1; float Angle2; playerSearchProcessState = PlayerSearchProcessState.Searching; if (PSS == PlayerSearchState.SHEEPSEARCH) { int Mincount = 0; //양 추적 매커니즘. 주인 없는 양 중 가까운 양의 획득을 제일 우선시한다. if (ManagerHandler.Instance.GameManager().GetCurrentSheepNum() != 0) { for (int i = 1; i < ManagerHandler.Instance.GameManager().GetCurrentSheepNum(); i++) { SheepControlThree checkingSheep = ManagerHandler.Instance.GameManager().GetSheepFromHordeSheepList(i); if (!checkingSheep.gameObject.activeSelf) { continue; } else { Angle1 = Vector3.Angle(this.transform.position, ManagerHandler.Instance.GameManager().GetSheepFromHordeSheepList(Mincount).transform.position); Angle2 = Vector3.Angle(this.transform.position, checkingSheep.transform.position); if (Angle1 <= Angle2) { continue; } else if (Angle2 < Angle1) { Mincount = i; } } } targetObject = ManagerHandler.Instance.GameManager().GetSheepFromHordeSheepList(Mincount).gameObject; } else { targetObject = HQ.gameObject; } } else if (PSS == PlayerSearchState.BACKTOHOME) { //귀환 매커니즘. 쉽다. targetObject = HQ.gameObject; } else if (PSS == PlayerSearchState.ENEMYSEARCH) { // 적 추적시 매커니즘. // 일단 없애놓고 나중에 추가할까 생각중. } yield return(null); playerSearchProcessState = PlayerSearchProcessState.Ready; }
//PlayerControl에 필요한 요소 초기화. private void PlayerInstnaceInit() { PMI = new PlayerMovingInstance(this.gameObject.transform.parent); PMI.GetPlayerParent().position = Vector3.zero; PMI.GetPlayerParent().rotation = HQ.transform.rotation; HQ.SetOwner(this); PSS = PlayerSearchState.BACKTOHOME; playerSearchProcessState = PlayerSearchProcessState.Ready; PS = new PlayerState(); PS = GetComponent <PlayerState>(); playerHerdSheepControl = GetComponent <PlayerHerdSheepControl>(); ShepherdAttackEffectBasic = new List <SkillEffectBase>(GetComponents <SkillEffectBase>()); playerHerdSheepControl.InitHerdSheepBase(this, this.PMI.Speed, true); }