/// <summary> /// Updater method that runs every frame to check for keyboard input and call the right methods for camera movement /// </summary> private void LateUpdate() { // Moving if (frameMove != Vector3.zero) { Vector3 speedModFrameMove = new Vector3(frameMove.x * lateralSpeed, frameMove.y, frameMove.z * inOutSpeed); transform.position += transform.TransformDirection(speedModFrameMove) * Time.deltaTime; LockPositionInBounds(); frameMove = Vector3.zero; } // Rotating if (frameRotate != 0f) { transform.Rotate(Vector3.up, frameRotate * Time.deltaTime * rotateSpeed); frameRotate = 0f; } if (frameZoom < 0f) { zoomStrategy.ZoomIn(cam, Time.deltaTime * Mathf.Abs(frameZoom) * zoomSpeed, nearZoomLimit); frameZoom = 0f; } else if (frameZoom > 0f) { zoomStrategy.ZoomOut(cam, Time.deltaTime * frameZoom * zoomSpeed, farZoomLimit); frameZoom = 0f; } }
private void LateUpdate() { var zoomedMoveCoeff = Mathf.Lerp(.5f, 4f, zoomStrategy.CurrentZoomLevel / (farZoomLimit - nearZoomLimit)); if (frameMove != Vector3.zero) { Vector3 speedModFrameMove = new Vector3( frameMove.x * lateralSpeed * zoomedMoveCoeff, frameMove.y * verticalSpeed * zoomedMoveCoeff, frameMove.z * inOutSpeed * zoomedMoveCoeff); transform.position += transform.TransformDirection(speedModFrameMove) * Time.deltaTime; } if (frameRotate != Vector2.zero) { transform.Rotate(Vector3.up, frameRotate.x * Time.deltaTime * rotateSpeed); arm.transform.Rotate(Vector3.right, frameRotate.y * Time.deltaTime * rotateSpeed, Space.Self); } if (frameZoom < 0f) { zoomStrategy.ZoomIn(cam, Time.deltaTime * Mathf.Abs(frameZoom) * zoomSpeed, nearZoomLimit); } else if (frameZoom > 0f) { zoomStrategy.ZoomOut(cam, Time.deltaTime * frameZoom * zoomSpeed, farZoomLimit); } frameMove = Vector3.zero; frameRotate = Vector2.zero; frameZoom = 0f; }
private void Zoom() { if (frameZoom < 0f) { float delta = Time.deltaTime * Mathf.Abs(frameZoom) * zoomSpeed; zoomStrategy.ZoomIn(cam, delta, nearZoomLimit); frameZoom = 0f; } else if (frameZoom > 0f) { float delta = Time.deltaTime * frameZoom * zoomSpeed; zoomStrategy.ZoomOut(cam, delta, farZoomLimit); frameZoom = 0f; } }
private void LateUpdate() { // reset camera position if (Input.GetKey(KeyCode.Space)) { transform.SetPositionAndRotation(initialPosition, initialRotation); zoomStrategy = cam.orthographic ? ((IZoomStrategy) new OrthographicZoomStrategy(cam, startingZoom)) : new PerspectiveZoomStrategy(cam, cameraOffset, startingZoom); } if (frameMove != Vector3.zero) { Vector3 speedModFrameMove = new Vector3(frameMove.x * lateralSpeed, frameMove.y, frameMove.z * inOutSpeed); transform.position += transform.TransformDirection(speedModFrameMove) * Time.deltaTime; LockPositionInBounds(); frameMove = Vector3.zero; } if (frameZoom < 0f) { zoomStrategy.ZoomIn(cam, Time.deltaTime * Mathf.Abs(frameZoom) * zoomSpeed, nearZoomLimit); frameZoom = 0f; } if (frameZoom > 0f) { zoomStrategy.ZoomOut(cam, Time.deltaTime * frameZoom * zoomSpeed, farZoomLimit); frameZoom = 0f; } if (frameRotate != 0f) { transform.RotateAround(new Vector3(95f, 0f, 95f), new Vector3(0, 1f, 0), frameRotate * Time.deltaTime * rotateSpeed); frameRotate = 0f; } }