Files
MI-38/Heli_with_panels/Assets/Fusel/scripts/CameraFree.cs
2022-07-04 13:15:35 +03:00

101 lines
4.1 KiB
C#

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);
//}
}