mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/MI-38.git
synced 2026-01-24 00:05:39 +03:00
101 lines
4.1 KiB
C#
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);
|
|
//}
|
|
}
|