Exemplo n.º 1
0
    /// <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;
        }
    }
Exemplo n.º 2
0
    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;
    }
Exemplo n.º 3
0
 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;
     }
 }
Exemplo n.º 4
0
    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;
        }
    }