юзать transform.localRotation
Вместо transform.rotation
И да, прежде чем скинуть вам решение, я его проверил.это вы о том что в первом посте?
private void RotateCamera()
{
if (Input.GetMouseButton(1))
{
float mouseMove = Input.GetAxis("Mouse X") * rotationSpeed;
_focus.Rotate(0, mouseMove, 0); //-mouseMove для инвертирования
Debug.Log("Rotation " + mouseMove.ToString());
}
}
Vector3 lastPosView;
private void MoveCamera(){
if(Input.GetMouseButtonDown(0)){ lastPosView = CameraGeneral.ScreenToWorldPoint(Input.mousePosition); }
else if(Input.GetMouseButton(0)){
var newPosView = CameraGeneral.ScreenToWorldPoint(Input.mousePosition);
var cameraMovment = (lastPosView - newPosView);
CameraGeneral.transform.Translate(new Vector3(cameraMovment.x, 0, 0));
CameraGeneral.transform.Translate(new Vector3(0, cameraMovment.y, 0));
lastPosView = CameraGeneral.ScreenToWorldPoint(Input.mousePosition);
}
}
public Camera CameraGeneral;
private float InputMouseScrollDeltaY{ get { return Input.mouseScrollDelta.y; }}
private float CameraScalePrev = 10f, CameraScale = 10f;
private float CameraGeneralScale{ get{ return CameraGeneral.orthographicSize; } set{ CameraGeneral.orthographicSize = value; }}
private void Start(){
CameraGeneralScale = 10f;
}
private void Update(){
ZoomCamera();
RotationCamera();
}
private void ZoomCamera(){
CameraScalePrev -= InputMouseScrollDeltaY; CameraScalePrev = Mathf.Clamp(CameraScalePrev, 2f, 20f);
CameraScale = Mathf.MoveTowards(CameraGeneral.orthographicSize, CameraScalePrev, Time.deltaTime * 30f);
CameraGeneralScale = CameraScale;
}
public GameObject CameraCenter;
private void RotationCamera(){
if(Input.GetMouseButtonDown(2)){ Cursor.visible = false; }
if(Input.GetMouseButton(2)){
CameraGeneral.transform.RotateAround(CameraCenter.transform.position, CameraGeneral.transform.up, Input.GetAxis("Mouse X") * 5f);
CameraGeneral.transform.RotateAround(CameraCenter.transform.position, CameraGeneral.transform.right, -Input.GetAxis("Mouse Y") * 5f);
CameraGeneral.transform.rotation = Quaternion.Euler(CameraGeneral.transform.eulerAngles.x, CameraGeneral.transform.eulerAngles.y, 0f);
}
if(Input.GetMouseButtonUp(2)){ Cursor.visible = true; }
}
Cam.transform.LookAt(CameraCenter.transform); - это код, чтоб направить взгляд камеры на объект. Тогда объект окажется в центре камеры.
вообще для упрощения работы с камерой можно использовать Cinemachine
не тот движок для рендера выбран