So, I have a row of buttons in a selection grid so the buttons can only be selected one at a time. Buttons 5, 6 7 are used for navigating the scene PAN, ZOOM and ORBIT respectively. The touchscreen device does not recognise Input.GetAxis("Mouse x") etc, so a workaround seems to be to calculate mouse position on button down and the difference while dragging. Issues: I would like the camera to be offset by the same amount as the length of the drag, following the same direction. To rotate an object, perhaps the total screen width could be somehow converted to 360 degrees, so if I swipe the whole length of the screen the camera orbits around once? Both pan and zoom should slow down the closer you get to a target object. Anyone willing to throw in their penny's worth? Cheers Code (csharp): //PAN TOUCH if (GUIControl.menuInt == 5){ if (Input.GetKeyDown ("mouse 0")){ originalPos = Input.mousePosition; } if (Input.GetMouseButton(0)){ secondPos = Input.mousePosition; if (originalPos.x < secondPos.x){ transform.Translate(-width/(distance*10), 0, 0); } if (originalPos.x > secondPos.x){ transform.Translate(width/(distance*10), 0, 0); } if (originalPos.y < secondPos.y){ transform.Translate(0, -height/(distance*10), 0); } if (originalPos.y > secondPos.y){ transform.Translate(0, height/(distance*10), 0); } } } //ZOOM TOUCH if (GUIControl.menuInt == 6){ if (Input.GetKeyDown ("mouse 0")){ originalPos = Input.mousePosition; } if (Input.GetMouseButton(0)){ secondPos = Input.mousePosition; if (originalPos.x < secondPos.x){ transform.Translate(0, 0, width/(distance*10)); } if (originalPos.x > secondPos.x){ transform.Translate(0, 0,-width/(distance*10)); } } } //ORBIT TOUCH if (GUIControl.menuInt == 7){ if (Input.GetKeyDown ("mouse 0")){ originalPos = Input.mousePosition; } if (Input.GetMouseButton(0)){ secondPos = Input.mousePosition; x += (secondPos.x - originalPos.x)/100; y -= (secondPos.y - originalPos.y)/100; var rotation = Quaternion.Euler(y, x, z); var position = rotation * Vector3(0.0, 0.0, -distance) + target.position; transform.rotation = rotation; transform.position = position; } }