YiHe_AllVersion/YHWeb/Assets/YHElectric/Scripts/InputController/CameraOperate.cs

81 lines
2.6 KiB
C#

using DG.Tweening;
using UnityEngine;
using XFrame.Core.UI;
namespace YHElectric
{
public enum ControlType
{
Rotate,
Move,
Scale
}
public class CameraOperate : MonoBehaviour
{
public static CameraOperate instance;
public InputController IC;
public static bool roaming = false;//正在漫游
public float locationSpeed = 20;
public static bool operate = true;
[HideInInspector]
public Animator anim;
public float minX, minY, minZ, maxX, maxY, maxZ;
public float sensitivity = 4.0f;
[HideInInspector]
public float sensitivityAmt = 4.0f;//actual sensitivity modified by IronSights Script
private float minimumX = -360f;
private float maximumX = 360f;
private float minimumY = -35f;
private float maximumY = 35f;
[HideInInspector]
public float rotationX = 0.0f;
[HideInInspector]
public float rotationY = 0.0f;
[HideInInspector]
public float inputY = 0.0f;
public float smoothSpeed = 0.35f;
private Quaternion originalRotation;
private void Awake()
{
instance = this;
}
void Start()
{
anim = GetComponent<Animator>();
anim.enabled = false;
originalRotation = transform.localRotation;
sensitivityAmt = sensitivity;
}
void LateUpdate()
{
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
transform.Translate(new Vector3(h, 0, v) * locationSpeed * Time.deltaTime);
if (Input.GetMouseButton(1))//旋转
{
float rotationY = transform.localEulerAngles.y + Input.GetAxis("Mouse X") * Time.deltaTime * sensitivity;
float rotationX = transform.localEulerAngles.x - Input.GetAxis("Mouse Y") * Time.deltaTime * sensitivity;
rotationX = Mathf.Clamp(rotationX, 0, 90);
transform.localEulerAngles = new Vector3(rotationX, rotationY, 0);
}
if (Input.GetAxis("Mouse ScrollWheel") != 0)//滑动鼠标滚轮移动
{
transform.Translate(Vector3.forward * Input.GetAxis("Mouse ScrollWheel") * locationSpeed, Space.Self);
}
transform.position = new Vector3(//摄像机位置限制
Mathf.Clamp(transform.position.x, minX, maxX),
Mathf.Clamp(transform.position.y, minY, maxY),
Mathf.Clamp(transform.position.z, minZ, maxZ));
}
}
}