/// <summary> /// 가장 어그로가 높은 플레이어 확인 /// 1. 어그로 초기화 /// 2. 어그로가 가장 높은 플레이어의 정보 받기 /// 3. 두번째 어그로 높은 플레이어 지정 /// 4. 타겟플레이어 지정 /// 5. 타겟이 바뀐경우에만 /// 5-1. 교전중인 적 증감 (처음만 감소 안함. 기존타겟이 없으니까) /// </summary> void SetMaxAggroPlayer() { // 1. m_maxAggroPlayerNum = -2; m_maxAggroPoint = 0; // 2. for (int i = 0; i < AggroManager.Instance.playerAggroList.Count; i++) { if (m_aggroPoint[i] > m_maxAggroPoint) { // 3. if (m_maxAggroPlayerNum == -2) { m_secondTargetTr = AggroManager.Instance.playerAggroList[i].playerObject.transform; } else { m_secondTargetTr = AggroManager.Instance.playerAggroList[m_maxAggroPlayerNum].playerObject.transform; } m_maxAggroPlayerNum = i; m_maxAggroPoint = m_aggroPoint[i]; } } if (m_maxAggroPlayerNum != -2) { // 4. m_targetTr = AggroManager.Instance.playerAggroList[m_maxAggroPlayerNum].playerObject.transform; // Debug.Log(m_targetTr.gameObject.name); // 5. if (m_maxAggroPlayerNum != m_beforeAggroPlayerNum) { // 5-1. if (m_beforeAggroPlayerNum != -1) { tmpPlayerAggroInfo = AggroManager.Instance.playerAggroList[m_beforeAggroPlayerNum]; tmpPlayerAggroInfo.battleAINum--; AggroManager.Instance.playerAggroList[m_beforeAggroPlayerNum] = tmpPlayerAggroInfo; // AggroManager.Instance.playerAggroList[beforeAggroPlayerNum].battleAINum--; } tmpPlayerAggroInfo = AggroManager.Instance.playerAggroList[m_maxAggroPlayerNum]; tmpPlayerAggroInfo.battleAINum++; AggroManager.Instance.playerAggroList[m_maxAggroPlayerNum] = tmpPlayerAggroInfo; // AggroManager.Instance.playerAggroList[_maxAggroPlayerNum].battleAINum++; m_beforeAggroPlayerNum = m_maxAggroPlayerNum; } } }
/// <summary> /// 어그로 추가하기 (처음, 되살아 났을때) /// 1. 중복체크 /// 2. 데이터 넣고 리스트 추가 /// </summary> /// <param name="player"></param> /// <param name="netCode"></param> public void AddPlayerInfo(GameObject player, short netCode) { // 1. for (int i = 0; i < playerAggroList.Count; i++) { if (playerAggroList[i].netCode == netCode) { return; } } // 2. PlayerAggroInfo _newPlayerInfo = new PlayerAggroInfo(); _newPlayerInfo.playerObject = player; _newPlayerInfo.battleAINum = 0; _newPlayerInfo.netCode = netCode; playerAggroList.Add(_newPlayerInfo); // Debug.Log("접속인원 : " + playerAggroList.Count); }
float m_maxAggroPoint; // 가장 높은 어그로 점수 private void Start() { tmpPlayerAggroInfo = new PlayerAggroInfo(); m_aggroPoint = new float[4]; }