public void MapClassSetting(int iCurBlock) //현재 맵의 클래스 셋팅(블록) { //현재 블럭에 맞는 클래스들을 각각 설정 GameManager.instance.BlockIndex = iCurBlock; int iMax = m_BlockList[iCurBlock].BlockClass.Length; for (int i = 1; i < 4; i++) { //초기화 부분 m_BlockNode.transform.GetChild(i).transform.GetChild((int)BLOCK_COMPONENT.COMPONENT_AREA).GetComponent <AreaPoint>()?.CoroutineStart(false); //에리어 포인트 스탑 m_BlockNode.transform.GetChild(i).transform.GetChild((int)BLOCK_COMPONENT.COMPONENT_MARK).gameObject.SetActive(false); //마크 삭제 if (i == 1 || i == 2) { //0->에리어 포인트 1->마크(Companion, boss), 2->스포트라이트 3-<히트포인트 4-<에너미매니저 GameObject Node = m_BlockNode.transform.GetChild(i).transform.GetChild((int)BLOCK_COMPONENT.COMPONENT_SPOT_LIGHT).gameObject; if (Node != null) { Node.GetComponent <SpotLight>().CoroutineStart(false); //코루틴 스탑 Node.SetActive(false); } Node = m_BlockNode.transform.GetChild(i).transform.GetChild((int)BLOCK_COMPONENT.COMPONENT_HIT_POINT).gameObject; Node.SetActive(false); //히트 포인트 체크 Node = m_BlockNode.transform.GetChild(i).transform.GetChild((int)BLOCK_COMPONENT.COMPONENT_ENEMY_MANAGER).gameObject; if (Node != null) { Node.GetComponent <EnemyManager>().EnemyListClear(); //코루틴 스탑 Node.SetActive(false); } } } for (int i = 0; i < iMax; i++) { switch (m_BlockList[iCurBlock].BlockClass[i]) { case MAP_BLOCK_CLASS.BLOCK_START: float fX = 0.0f; fX = m_BlockNode.transform.GetChild(i).transform.position.x; //if (GameManager.instance.MissionStatus == MISSION_STATUS.MISSION_START || // GameManager.instance.MissionStatus == MISSION_STATUS.MISSION_BATTLE_LOSE) //{ // //미션 스타트나, 배틀 루즈시 블럭의 처음 위치로 // fX = m_BlockNode.transform.GetChild(i).transform.position.x; //} //else //{ // fX = GameManager.instance.CurXPosition; //} m_PlayerObject.SetActive(false); m_PlayerObject.transform.position = new Vector3(fX, (float)1.6); Camera.main.GetComponent <FollowCharacter>().m_PlayerTR = m_PlayerObject.transform; break; case MAP_BLOCK_CLASS.BLOCK_MONSTER: //해당 몬스터를 잡은 상태라면 //일반 몬스터는 노란색 1,1,0 //0->에리어 포인트 1->마크(Companion, boss), 2->스포트라이트 3-<히트포인트 4-<에너미매니저 if (GameManager.instance.BlockList[iCurBlock].m_bActive) { m_BlockNode.transform.GetChild(i).transform.GetChild((int)BLOCK_COMPONENT.COMPONENT_SPOT_LIGHT)?.gameObject.SetActive(true); m_BlockNode.transform.GetChild(i).transform.GetChild((int)BLOCK_COMPONENT.COMPONENT_HIT_POINT)?.gameObject.SetActive(true); SpotLight Spot = m_BlockNode.transform.GetChild(i).GetComponentInChildren <SpotLight>(); Spot.OnOffSpeed = m_fNormalSpeed; Spot.OnOffTime = m_fNormalDelayTime; Spot.CoroutineStart(true); Spot.BlockIndex = i; //블록 인덱스 Spot.ColorSetting(1.0f, 1.0f, 0.0f); EnemyManager Enemy = m_BlockNode.transform.GetChild(i).transform.GetChild((int)BLOCK_COMPONENT.COMPONENT_ENEMY_MANAGER).GetComponent <EnemyManager>(); Enemy.Init(GameManager.instance.StageIndex, GameManager.instance.BlockIndex, CHARACTER_TYPE.CHAR_ENEMY); //해당 몬스터를 잡으면 더이 상 활성화 X } break; case MAP_BLOCK_CLASS.BLOCK_COMPANION: if (GameManager.instance.BlockList[iCurBlock].m_bActive) { m_BlockNode.transform.GetChild(i).transform.GetChild((int)BLOCK_COMPONENT.COMPONENT_MARK)?.gameObject.SetActive(true); m_BlockNode.transform.GetChild(i).transform.GetChild((int)BLOCK_COMPONENT.COMPONENT_AREA)?.GetComponent <AreaPoint>().CallBackSetting(CompanionBlock); //엔드포인트 셋팅 m_BlockNode.transform.GetChild(i).transform.GetChild((int)BLOCK_COMPONENT.COMPONENT_AREA)?.GetComponent <AreaPoint>().CoroutineStart(true); //코루틴 스탑 } //동료 블럭 break; case MAP_BLOCK_CLASS.BLOCK_BOSS: if (GameManager.instance.BlockList[iCurBlock].m_bActive) { m_BlockNode.transform.GetChild(i).transform.GetChild((int)BLOCK_COMPONENT.COMPONENT_MARK)?.gameObject.SetActive(true); m_BlockNode.transform.GetChild(i).transform.GetChild((int)BLOCK_COMPONENT.COMPONENT_HIT_POINT)?.gameObject.SetActive(true); //히트 체크 계속 켜줌 EnemyManager Enemy = m_BlockNode.transform.GetChild(i).transform.GetChild((int)BLOCK_COMPONENT.COMPONENT_ENEMY_MANAGER).GetComponent <EnemyManager>(); Enemy.Init(GameManager.instance.StageIndex, GameManager.instance.BlockIndex, CHARACTER_TYPE.CHAR_BOSS); //해당 몬스터를 잡으면 더이 상 활성화 X } //보스 블럭 break; case MAP_BLOCK_CLASS.BLOCK_DANGEROUS: //일반 몬스터는 노란색 1,0,0 if (GameManager.instance.BlockList[iCurBlock].m_bActive) { m_BlockNode.transform.GetChild(i).transform.GetChild((int)BLOCK_COMPONENT.COMPONENT_SPOT_LIGHT)?.gameObject.SetActive(true); m_BlockNode.transform.GetChild(i).transform.GetChild((int)BLOCK_COMPONENT.COMPONENT_HIT_POINT)?.gameObject.SetActive(true); SpotLight Spot = m_BlockNode.transform.GetChild(i).GetComponentInChildren <SpotLight>(); Spot.OnOffSpeed = m_fDangerSpeed; Spot.OnOffTime = m_fDangerDelayTime; Spot.CoroutineStart(true); Spot.BlockIndex = i; //블록 인덱스 Spot.ColorSetting(1.0f, 0.0f, 0.0f); EnemyManager Enemy = m_BlockNode.transform.GetChild(i).transform.GetChild((int)BLOCK_COMPONENT.COMPONENT_ENEMY_MANAGER).GetComponent <EnemyManager>(); Enemy.Init(GameManager.instance.StageIndex, GameManager.instance.BlockIndex, CHARACTER_TYPE.CHAR_DANGEROUS); //해당 몬스터를 잡으면 더이 상 활성화 X } break; case MAP_BLOCK_CLASS.BLOCK_END: m_BlockNode.transform.GetChild(i).transform.GetChild((int)BLOCK_COMPONENT.COMPONENT_AREA).GetComponent <AreaPoint>().CallBackSetting(EndPoint); //엔드포인트 셋팅 m_BlockNode.transform.GetChild(i).transform.GetChild((int)BLOCK_COMPONENT.COMPONENT_AREA).GetComponent <AreaPoint>().CoroutineStart(true); //코루틴 스탑 break; } } m_PlayerObject.SetActive(true); for (int i = 0; i < m_BlockList.Count; i++) { if (i == iCurBlock) { m_BlockInputList[i].CurPlayer(true); } else { m_BlockInputList[i].CurPlayer(false); } m_BlockInputList[i].SelectOK(false); } //그리고 미니맵에 현재 위치 표시 }