IEnumerator Start() { if (GameManager.Instance == null) { Instantiate(Resources.Load <GameObject>("Game")); } while (GameManager.Instance == null) { yield return(null); } if (introCam == null) { introCam = FindTaggedInScene <IntroCam>("K_INTRO_CAM"); } if (gameCam == null) { gameCam = FindTaggedInScene <GameCam>("K_GAMECAM"); } if (winCam == null) { winCam = FindTaggedInScene <KCam>("K_WIN_CAM"); } if (mapCam == null) { mapCam = FindTaggedInScene <DragCam>("K_MAP_CAM"); } GameManager.Instance.currentLevel = this; cameraController.RegisterCamera("Game", gameCam); cameraController.RegisterCamera("Map", mapCam); cameraController.RegisterCamera("Intro", introCam); cameraController.RegisterCamera("Win", winCam); cameraController.SwitchToCamera("Game"); }
IEnumerator CameraLerp(KCam fromCam, KCam toCam, float time) { inTransition = true; toCam.SetActive(true); float lerpTime = 0; while (lerpTime < time) { float t = lerpTime / time; mainCamera.transform.position = Vector3.Lerp(fromCam.transform.position, toCam.transform.position, t); mainCamera.transform.rotation = Quaternion.Lerp(fromCam.transform.rotation, toCam.transform.rotation, t); mainCamera.fieldOfView = Mathf.Lerp(fromCam.camera.fieldOfView, toCam.camera.fieldOfView, t); mainCamera.aspect = Mathf.Lerp(fromCam.camera.aspect, toCam.camera.aspect, t); lerpTime += Time.deltaTime; yield return(null); } mainCamera.transform.SetParent(toCam.transform, false); mainCamera.CopyFrom(toCam.camera); activeCam = toCam; if (fromCam != toCam) { fromCam.SetActive(false); } inTransition = false; }
public void RegisterCamera(string tag, KCam cam) { cameras.Add(tag, cam); camList.Add(cam); cam.camera.enabled = false; cam.SetActive(false); }
public void CopyPositionFromActive(KCam cam) { if (cam == activeCam || activeCam == null) { return; } cam.transform.position = activeCam.transform.position; cam.transform.rotation = activeCam.transform.rotation; }
public void UpdateCamera(KCam cam) { var pos = cam.camera.transform.position; Vector2 relPos = Vector2.zero; if (Test(pos, ref relPos)) { cam.inForbiddenZone = true; float vPos = (1f - Mathf.Clamp(relPos.y, 0, 1f)); cam.forbiddenStrength = Mathf.Lerp(strengthMin, strengthMax, vPos); Debug.Log("Forbidden: " + cam.forbiddenStrength); cam.forbiddenDirection = -transform.up; cam.forbiddenExit = pos + transform.up * vPos * extentVPos; } }
public void UpdateCamera(KCam cam) { if (cam.inForbiddenZone) { return; } var pos = cam.camera.transform.position; if (IsOutsideWorld(pos, ref backToWorld)) { cam.inForbiddenZone = true; cam.forbiddenStrength = Mathf.Clamp(backToWorld.magnitude * 0.1f, 0, 1f); cam.forbiddenDirection = -backToWorld.normalized; cam.forbiddenExit = pos + backToWorld; } }
public void LerpToKCam(KCam toCam, float time) { if (inTransition) { return; } if (activeCam == null) { SwitchToKCam(toCam); return; } if (!camList.Contains(toCam)) { camList.Add(toCam); } mainCamera.enabled = true; StartCoroutine(CameraLerp(activeCam, toCam, time)); }
public void SwitchToKCam(KCam toCam) { activeCam = toCam; mainCamera.enabled = true; GameManager.SetAudioListener(audioListener); mainCamera.transform.SetParent(activeCam.transform, false); mainCamera.CopyFrom(activeCam.camera); foreach (KCam c in camList) { c.SetActive(c == activeCam); } if (!camList.Contains(toCam)) { camList.Add(toCam); } }