Ejemplo n.º 1
0
    private void Start()
    {
        // 컴포넌트 불러오기
        m_Net = GameObject.Find("NetManager").GetComponent <InitNetManager>();
        m_gr  = GameObject.Find("UI_canvas").GetComponent <GraphicRaycaster>();
        ped   = new PointerEventData(null);

        // 숨기기 및 잠금
        Cursor.lockState = CursorLockMode.Locked;
        Cursor.visible   = false;
        mouseOut         = false;

        // 방 날씨 설정

        // - 낮
        if (m_Net.m_weather == "Morning")
        {
            // 텍스쳐 변경
            GameObject.Find("SkyDome").GetComponent <MeshRenderer>().material.mainTexture = m_Morning;
            m_light.color     = new Color32(248, 198, 158, 255);
            m_weather_passive = -1;
        }

        // - 저녁
        if (m_Net.m_weather == "Evening")
        {
            // 텍스쳐 변경
            GameObject.Find("SkyDome").GetComponent <MeshRenderer>().material.mainTexture = m_Evening;
            m_light.color     = new Color32(255, 28, 0, 255);
            m_weather_passive = 0;
        }

        // - 밤/새벽
        if (m_Net.m_weather == "Dawn")
        {
            // 텍스쳐 변경
            GameObject.Find("SkyDome").GetComponent <MeshRenderer>().material.mainTexture = m_Dawn;
            m_light.color     = new Color32(82, 2, 142, 255);
            m_weather_passive = 1;
        }

        // 아이템 생성
        for (int i = 0; i < 5; ++i)
        {
            var new_Item = (GameObject)Instantiate(m_Item_Prefabs, new Vector3(m_Net.m_items_x[i], m_Net.m_items_y[i], m_Net.m_items_z[i]), Quaternion.identity);
            new_Item.name = "Item_num/" + (i + 1); // 오브젝트 이름 설정
        }

        // 플레이어 UI 설정
        if (m_Net.m_team_num % 2 == 0)                                                                                                             // 루비
        {
            GameObject.Find("character_img").transform.GetComponent <Image>().sprite = m_R_UI_chr_imgs[m_Net.r_chr_num[m_Net.m_team_num - 1] - 1]; // 오브젝트 캐릭터 이미지 설정
        }
        if (m_Net.m_team_num % 2 == 1)                                                                                                             // 사파이어
        {
            GameObject.Find("character_img").transform.GetComponent <Image>().sprite = m_S_UI_chr_imgs[m_Net.r_chr_num[m_Net.m_team_num - 1] - 1]; // 오브젝트 캐릭터 이미지 설정
        }
        // 플레이어 생성
        for (int i = 0; i < 4; ++i)
        {
            // 본인 플레이어 생성
            if (m_Net.m_team_num == i + 1)
            {
                var new_Player = (GameObject)Instantiate(m_user_Character_Prefabs[m_Net.r_chr_num[i] - 1], UnityEngine.Vector3.zero, Quaternion.identity);
                new_Player.name = "Team_num/" + (i + 1);                                                                         // 오브젝트 이름 설정
                new_Player.transform.localPosition = new UnityEngine.Vector3(m_Net.r_posX[i], m_Net.r_posY[i], m_Net.r_posZ[i]); // 오브젝트 위치 설정
                new_Player.transform.eulerAngles   = new UnityEngine.Vector3(m_Net.r_rotX[i], m_Net.r_rotY[i], m_Net.r_rotZ[i]); // 오브젝트 방향 설정

                // 플레이어 팀 circle 설정
                if ((i + 1) % 2 == 0) // 루비
                {
                    new_Player.transform.GetChild(2).GetComponent <MeshRenderer>().material = m_R_Circle;
                    m_Net.max_hp = 120; // 루비팀 특성상 최대 체력 상승
                }

                if ((i + 1) % 2 == 1) // 사파이어
                {
                    new_Player.transform.GetChild(2).GetComponent <MeshRenderer>().material = m_S_Circle;
                    m_Net.max_hp = 100; // 사파이어 체력
                }
            }
            // 그 외 플레이어 생성
            else
            {
                var new_Player = (GameObject)Instantiate(m_other_Character_Prefabs[m_Net.r_chr_num[i] - 1], UnityEngine.Vector3.zero, Quaternion.identity);
                new_Player.name = "Team_num/" + (i + 1);                                                                         // 오브젝트 이름 설정
                new_Player.transform.localPosition = new UnityEngine.Vector3(m_Net.r_posX[i], m_Net.r_posY[i], m_Net.r_posZ[i]); // 오브젝트 위치 설정
                new_Player.transform.eulerAngles   = new UnityEngine.Vector3(m_Net.r_rotX[i], m_Net.r_rotY[i], m_Net.r_rotZ[i]); // 오브젝트 방향 설정

                // 플레이어 팀 circle 설정
                if ((i + 1) % 2 == 0) // 루비
                {
                    new_Player.transform.GetChild(2).GetComponent <MeshRenderer>().material = m_R_Circle;
                }

                if ((i + 1) % 2 == 1) // 사파이어
                {
                    new_Player.transform.GetChild(2).GetComponent <MeshRenderer>().material = m_S_Circle;
                }
            }
        }

        // 플레이어 입력 컴포넌트 연결
        m_Net.playerInput = GameObject.Find("Team_num/" + m_Net.m_team_num).GetComponent <PlayerInput>();

        // 날씨 영향 시작
        StartCoroutine(Weather_Passive());

        if (m_Net.new_player) // 도중 입장 플레이어의 경우
        {
            // 임시 플레이어 컨트롤 잠금
            GameObject.Find("Team_num/" + m_Net.m_team_num).GetComponent <PlayerController>().Dead = true;

            // 본인의 색깔 변경
            GameObject.Find("Team_num/" + m_Net.m_team_num).GetComponent <PlayerController>().transform.GetChild(0).GetComponent <SkinnedMeshRenderer>().material.SetColor("_Color", new Color32(255, 215, 100, 255));

            // 무적 5초 후 해제
            GameObject.Find("Team_num/" + m_Net.m_team_num).GetComponent <ResponsePlayer>().FirstResponse();

            // 타이머 시작 및 업데이트
            if (m_Net.new_Sec < 10)
            {
                GameObject.Find("Time_text").GetComponent <Text>().text = m_Net.new_Min + " : 0" + ((int)m_Net.new_Sec - 4); // 카운터 만큼 제거
            }
            else
            {
                GameObject.Find("Time_text").GetComponent <Text>().text = m_Net.new_Min + " : " + ((int)m_Net.new_Sec - 4); // 카운터 만큼 제거
            }

            GameObject.Find("Time_text").GetComponent <timer>().GetTimerStart(m_Net.new_Min, m_Net.new_Sec);

            // 팀 점수 업데이트
            if (m_Net.new_S_score < 10)
            {
                GameObject.Find("Sapphire_Score_text").GetComponent <Text>().text = "0" + m_Net.new_S_score.ToString();
            }
            else
            {
                GameObject.Find("Sapphire_Score_text").GetComponent <Text>().text = m_Net.new_S_score.ToString();
            }

            if (m_Net.new_R_score < 10)
            {
                GameObject.Find("Ruby_Score_text").GetComponent <Text>().text = "0" + m_Net.new_R_score.ToString();
            }
            else
            {
                GameObject.Find("Ruby_Score_text").GetComponent <Text>().text = m_Net.new_R_score.ToString();
            }
        }
        else // 그 외 일반 플레이어
        {
            // 게임 시작 호출
            m_Net.GameStart();
        }
    }
    private InitNetManager m_Net; // 네트워크 컴포넌트

    private void Start()
    {
        m_Net = GameObject.Find("NetManager").GetComponent <InitNetManager>();
    }