Pan an isometric ortho camera

I’m looking for some advice on panning an isometric orthographic camera using mouse input.

Currently, I was trying to map a difference of the mouse axes compared to reference coordinates captures when the right mouse button is pressed and then tracking the mouse until the right button is released. The axes are then used to translate the camera transform along the right and up axes.

It doesn’t feel right-- there’s no clear correspondence to the sensitivity of the mouse and camera movement. Sometimes, the y axis will just run away. There is probably a tried and true method for simple ortho panning… something like you have in the Unity editor window itself.

2 Answers

2

You can just use the delta between you current mousePosition and the one in the last frame for that. To get a smoother behaviour you wold lerp the calculated delta with the delta from the last frame. Multiply the delta with an adjustable float for sensitivity.

i was facing the same prob, here is how i handled it :

  • in function OnGui() check for the mouse drag event.

  • then get the movement of mouse in the respective axis. that is horizontal and vertical.

  • then add this vector3 to the current camera position

  • drag speed is just used to change the speed of panning according to mouse movement

    function OnGUI()
    {
    var e:Event = Event.current;

if(e.type.ToString() == “mouseDrag”)

{
//print(e.type.ToString());

print(Input.mousePosition.ToString());

var translation = new Vector3(Input.GetAxis(“Mouse X”) * DragSpeed * Time.deltaTime/5, Input.GetAxis(“Mouse Y”) * DragSpeed * Time.deltaTime/5,0.0);

     //camera.transform.position -= translation;
     camera.transform.position.x -= Mathf.Clamp(translation.x,-10,25);
     camera.transform.position.y -= translation.y;
  camera.transform.position.z -= translation.z;

}
}