using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; public class CameraFree : MonoBehaviour//, IPointerDownHandler { public Transform target; //private Transform Changedtarget; //public Transform Changedtarget; public Vector3 offset; public float sensitivity = 3; // чувствительность мышки public float limit = 80; // ограничение вращения по Y public float zoom = 0.25f; // чувствительность при увеличении, колесиком мышки public float zoomMax = 10; // макс. увеличение public float zoomMin = 3; // мин. увеличение private float X, Y; void Start() { limit = Mathf.Abs(limit); if (limit > 90) limit = 90; offset = new Vector3(offset.x, offset.y, -Mathf.Abs(zoomMax) / 2); transform.position = target.position + offset; transform.rotation = Quaternion.Euler(10, 147, 0); //установка исходных значений камеры по rotation } void Update() { if (Input.GetAxis("Mouse ScrollWheel") > 0) offset.z += zoom; else if (Input.GetAxis("Mouse ScrollWheel") < 0) offset.z -= zoom; offset.z = Mathf.Clamp(offset.z, -Mathf.Abs(zoomMax), -Mathf.Abs(zoomMin)); if (Input.GetKey(KeyCode.Mouse1)) { X = transform.localEulerAngles.y + Input.GetAxis("Mouse X") * sensitivity; Y += Input.GetAxis("Mouse Y") * sensitivity; Y = Mathf.Clamp(Y, -limit, limit); transform.localEulerAngles = new Vector3(-Y, X, 0); } //transform.localEulerAngles = new Vector3(-Y, X, 0); //строка скопирована на строку выше transform.position = transform.localRotation * offset + target.position; } public void ChangeTargetPOSopr() //смена таргета на другой, вокруг которого будет крутиться камера { //GameObject.FindGameObjectsWithTag("POSopr"); target = GameObject.FindGameObjectsWithTag("POSopr")[0].transform; offset.y = 0; zoom = 5; zoomMax = 100; zoomMin = 5; } public void ChangeTargetPOSnv() //смена таргета на другой, вокруг которого будет крутиться камера { //GameObject.FindGameObjectsWithTag("POSopr"); target = GameObject.FindGameObjectsWithTag("POSnv")[0].transform; offset.y = 0; zoom = 5; zoomMax = 100; zoomMin = 5; } public void ChangeTargetPOSrv() //смена таргета на другой, вокруг которого будет крутиться камера { //GameObject.FindGameObjectsWithTag("POSopr"); target = GameObject.FindGameObjectsWithTag("POSrv")[0].transform; offset.y = 0; zoom = 5; zoomMax = 100; zoomMin = 5; } public void ChangeTargetPOSPOZ() //смена таргета на другой, вокруг которого будет крутиться камера { //GameObject.FindGameObjectsWithTag("POSopr"); target = GameObject.FindGameObjectsWithTag("POSPZU")[0].transform; offset.y = 0; zoom = 5; zoomMax = 100; zoomMin = 5; } public void ChangeTargetPOSOut() //возврат при смене таргета на исходный, вокруг которого будет крутиться камера { //GameObject.FindGameObjectsWithTag("POSopr"); target = GameObject.FindGameObjectsWithTag("Cabin")[0].transform; offset.y = 1.5f; zoom = 5; zoomMax = 170; zoomMin = 20; } //public float sensitivity = 3; // чувствительность мышки //private float X, Y; //void Update() //{ // X = transform.localEulerAngles.y + Input.GetAxis("Mouse X") * sensitivity; // Y += Input.GetAxis("Mouse Y") * sensitivity; // Y = Mathf.Clamp(Y, -90, 90); // transform.localEulerAngles = new Vector3(-Y, X, 0); //} }