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(); }
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); }