Esempio n. 1
0
    static void initStartCamAndShakeCam()
    {
        //< 카메라 정보 대입
        startRootObj = new GameObject("StartCameraRoot");
        startRootObj.transform.position = CameraManager.instance.RtsCamera.transform.position;
        startRootObj.transform.rotation = CameraManager.instance.RtsCamera.transform.rotation;

        startCamObj = new GameObject("StartCamera", typeof(Camera));
        startCamObj.camera.backgroundColor = CameraManager.instance.mainCamera.backgroundColor;
        startCamObj.camera.farClipPlane    = CameraManager.instance.mainCamera.farClipPlane;
        //startCamObj.transform.localPosition = startRootObj.transform.position;
        //startCamObj.transform.localRotation = startRootObj.transform.rotation;
        startCamObj.transform.position = CameraManager.instance.RtsCamera.transform.position;
        startCamObj.transform.rotation = CameraManager.instance.RtsCamera.transform.rotation;
        startCamObj.camera.fieldOfView = CameraManager.instance.mainCamera.fieldOfView;

        cutSceneCamShaker = startCamObj.AddComponent <Thinksquirrel.Utilities.CameraShake>();
        cutSceneCamShaker.cameras.Add(startCamObj.GetComponent <Camera>());

        CameraManager.instance.cutSceneCamShaker = cutSceneCamShaker;

//		Debug.Log (" startCamObj.transform :" + startCamObj.transform.position);
//
//		Debug.Break ();
    }
    protected override void Init()
    {
        base.Init();

        if (base.gameObject == null)
        {
            return;
        }

        proxyTrans = transform.FindChild("TransformProxy");
        if (null == proxyTrans)
        {
            Debug.LogError("you must have TransformProxy Object in CameraManager.");
            return;
        }

        RtsCamera = proxyTrans.GetComponent <RtsCamera>();
        if (null == RtsCamera)
        {
            RtsCamera      = proxyTrans.gameObject.AddComponent <RtsCamera>();
            rtsCameraMouse = proxyTrans.gameObject.AddComponent <RtsCameraMouse>();
            rtsCameraKeys  = proxyTrans.gameObject.AddComponent <RtsCameraKeys>();
        }
        else
        {
            rtsCameraMouse = proxyTrans.GetComponent <RtsCameraMouse>();
            rtsCameraKeys  = proxyTrans.GetComponent <RtsCameraKeys>();
        }

        mainCamera = proxyTrans.GetComponentInChildren <Camera>();
        Shaker     = mainCamera.GetComponent <Thinksquirrel.Utilities.CameraShake>();
        if (null == Shaker)
        {
            Shaker = mainCamera.gameObject.AddComponent <Thinksquirrel.Utilities.CameraShake>();
        }

        if (transform.FindChild("ClickEffect") != null)
        {
            Destroy(transform.FindChild("ClickEffect"));
        }

        GameObject effParent = new GameObject("ClickEffect");

        effParent.transform.parent        = transform;
        effParent.transform.localPosition = Vector3.zero;
        effParent.transform.localScale    = Vector3.one;
        effParent.layer = LayerMask.NameToLayer("UILayer");

        TouchEff = UIHelper.CreateEffectInGame(effParent.transform, "Fx_UI_click_01", true);

        //ActiveCamEff(false);

        InitData();
    }
Esempio n. 3
0
    static IEnumerator SetCutScene()
    {
        yield return(new WaitForSeconds(0.1f));

        //< 카메라 정보 대입
        startRootObj = new GameObject("StartCameraRoot");
        //startRootObj.transform.position = CameraManager.instance.RtsCamera.transform.position;
        //startRootObj.transform.rotation = CameraManager.instance.RtsCamera.transform.rotation;
        Unit targetUnit = CutSceneEventDic[0].GetComponent <Unit>();

        startRootObj.transform.position = new Vector3(targetUnit.transform.position.x, targetUnit.transform.position.y + targetUnit.UnitCollider.size.y * 2.0f, targetUnit.transform.position.z) + targetUnit.transform.forward * 35.0f;
        startRootObj.transform.rotation = Quaternion.LookRotation((targetUnit.transform.position + Vector3.up * (targetUnit.UnitCollider.size.y * 0.8f)) - startRootObj.transform.position);


        startCamObj = new GameObject("StartCamera", typeof(Camera));
        startCamObj.camera.backgroundColor  = CameraManager.instance.mainCamera.backgroundColor;
        startCamObj.camera.farClipPlane     = CameraManager.instance.mainCamera.farClipPlane;
        startCamObj.transform.localPosition = startRootObj.transform.position;
        startCamObj.transform.localRotation = startRootObj.transform.rotation;
        startCamObj.camera.fieldOfView      = CameraManager.instance.mainCamera.fieldOfView;
        startCamObj.AddComponent <Thinksquirrel.Utilities.CameraShake>();


        //Debug.Break ();
        //int idx = 0;
        bool SetEndPos = false;

        CutSceneSendMessage[] list = seq.GetComponentsInChildren <CutSceneSendMessage>(true);
        for (int i = 0; i < list.Length; i++)
        {
            if (list[i]._CutSceneEventData != null && !list[i].EventSystem)
            {
            }
            else
            {
                for (int j = 0; j < list[i]._CutSceneEventData.Length; j++)
                {
                    for (int p = 0; p < list[i]._CutSceneEventData[j].EventList.Length; p++)
                    {
                        //< 스타트 위치를 보정해준다
                        if (list[i]._CutSceneEventData[j].EventList[p].ActionType == eCutSceneEvent.SetStartPos)
                        {
                            yield return(G_GameInfo.GameInfo.StartCoroutine(ResetPosUpdate(list[i]._CutSceneEventData[j].EventList[p].ActionPos, false)));
                        }
                        else if (list[i]._CutSceneEventData[j].EventList[p].ActionType == eCutSceneEvent.SetDefaultPos)
                        {
                            //< 카메라 위치를 조정함
                            Vector3 center    = Vector3.zero;
                            Vector3 TargetPos = Vector3.zero;
                            foreach (KeyValuePair <int, GameObject> obj in CutSceneEventDic)
                            {
                                if (obj.Value != null)
                                {
                                    center += obj.Value.transform.position;
                                }
                            }

                            center   /= CutSceneEventDic.Count;
                            TargetPos = center;

                            //center += (CutSceneEventDic[0].transform.forward * 7.7f);
                            //center += (CutSceneEventDic[0].transform.forward * 9f);
                            center += (CutSceneEventDic[0].transform.forward * targetUnit.UnitCollider.size.y * 2.5f);

                            /*USTimelineProperty Infolist = seq.GetComponentInChildren<USTimelineProperty>();
                             *
                             * Infolist.Properties [0].curves [0].Keys[3].Time =seq.Duration+10;
                             * Infolist.Properties [0].curves [1].Keys [3].Time = seq.Duration+10;
                             * Infolist.Properties [0].curves [2].Keys [3].Time =seq.Duration+10;
                             * Infolist.Properties [1].curves [0].Keys[3].Time = seq.Duration+10;
                             * Infolist.Properties [1].curves [1].Keys [3].Time = seq.Duration;
                             * Infolist.Properties [1].curves [2].Keys [3].Time = seq.Duration+10;
                             * Infolist.Properties [1].curves [3].Keys [3].Time = seq.Duration+10;
                             *
                             * Infolist.Properties [0].curves[0].Keys[2].Time=seq.Duration;
                             * Infolist.Properties [0].curves [1].Keys [2].Time = seq.Duration;
                             * Infolist.Properties [0].curves [2].Keys [2].Time = seq.Duration;
                             * Infolist.Properties [1].curves [0].Keys[2].Time = seq.Duration;
                             * Infolist.Properties [1].curves [1].Keys [2].Time = seq.Duration;
                             * Infolist.Properties [1].curves [2].Keys [2].Time = seq.Duration;
                             * Infolist.Properties [1].curves [3].Keys [2].Time = seq.Duration;*/

                            SetTimeLinePos(center + new Vector3(0, 0.0f, 0), TargetPos);
                            SetEndPos = true;
                        }
                    }
                }
            }

            //<==============================================
            //<         미리 선작업을 진행해놓는다.
            //<==============================================
            if (list[i]._CutSceneEventData != null)
            {
                for (int j = 0; j < list[i]._CutSceneEventData.Length; j++)
                {
                    for (int p = 0; p < list[i]._CutSceneEventData[j].EventList.Length; p++)
                    {
                        if (list[i]._CutSceneEventData[j].EventList[p].ActionType == eCutSceneEvent.CameraShake && Shaker == null)
                        {
                            Camera _camera = startRootObj.gameObject.AddComponent <Camera>();
                            _camera.clearFlags  = CameraClearFlags.Nothing;
                            _camera.cullingMask = 0;

                            Shaker = startRootObj.AddComponent <Thinksquirrel.Utilities.CameraShake>();
                            Shaker.cameras.Add(_camera);
                        }
                    }
                }
            }
        }

        //< 위치 보정을 안했다면 여기서 해준다. (레이드가 아닐경우에만)
        if (!SetEndPos)
        {
            SetTimeLinePos(Vector3.zero, Vector3.zero, true);
        }

        USTimelineContainer[] list2 = seq.GetComponentsInChildren <USTimelineContainer>();
        for (int i = 0; i < list2.Length; i++)
        {
            list2[i].AffectedObject = startCamObj.transform;
        }

        //< 카메라 위치를 변경함(포커스 카메라)
        G_GameInfo.GameInfo.FocusingCam.ChangeParent(startCamObj.transform);

        seq.PlaybackFinished = (sequence) =>
        {
            G_GameInfo.GameInfo.StartCoroutine(ResetPosUpdate(CameraManager.instance.RtsCamera.transform.position, true));
            //G_GameInfo.GameInfo.StartCoroutine(SetCutScene());
        };


        seq.Play();

        //< 메인 카메라는 꺼줌
        UIHelper.SetMainCameraActive(false);

        yield return(null);
    }