1
// Calculate the world position for the mouse.
    var worldPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);

This code is what I'm using to get the mouse's position, but after using cinemachine this code seems to break. How can I get the mouse position while using cinemachine?

Ruzihm
  • 19,749
  • 5
  • 36
  • 48
  • Can you be more specific? What do you mean "seems to break" and what do you mean "using cinemachine"? Nothing about this code should change "after using cinemachine" as far as I'm aware of. – NSJacob1 Dec 02 '21 at 17:05
  • Please clarify your specific problem or provide additional details to highlight exactly what you need. As it's currently written, it's hard to tell exactly what you're asking. – Community Dec 08 '21 at 06:45
  • If you tilt the cinemachine, the coords are translated as if cinematic did not tilt. – pete Jun 02 '23 at 04:11

1 Answers1

0

If you're using multiple cinemachine camera. You should update the distance from target object to virtual camera

I use "cut" effect to change between virtual cameras enter image description here

public class MyController:MonoBehaviour
{
     private float distanceToCamera;
     private CinemachineBrain cameraBrain;

     private void Start()
     {
            cameraBrain = Camera.main.GetComponent<CinemachineBrain>();
            cameraBrain.m_CameraCutEvent.AddListener((brain) =>
            {
                  if (brain != null)
                  {
                       if (brain.ActiveVirtualCamera != null)
                       {
                            // if virtual camera changed
                            distanceToCamera = Vector3.Distance(transform.position, brain.ActiveVirtualCamera.VirtualCameraGameObject.transform.position);
                            Debug.Log($"on cut event {brain.ActiveVirtualCamera.Name} {distanceToCamera}");
                       }
                  }
            });

            // init distance
            distanceToCamera = Vector3.Distance(transform.position, Camera.main.transform.position);
     }

     private void Update()
     {
            if (Input.GetMouseButton(0))
            {
                    Vector3 mousePosition = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, distanceToCamera));
                    Debug.Log($"mousePosition {mousePosition}");
            }
     }
}
Cong Dan Luong
  • 1,577
  • 17
  • 15