ElectricityBusinessHall_Dig.../Assets/Resources/Scripts/CameraTrun.cs

93 lines
3.0 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraTrun : MonoBehaviour
{
// 水平视角移动的敏感度
public float sensitivityHor = 3f;
// 垂直视角移动的敏感度
public float sensitivityVer = 3f;
// 视角向上移动的角度范围,该值越小范围越大
public float upVer = -40;
// 视角向下移动的角度范围,该值越大范围越大
public float downVer = 45;
// 垂直旋转角度
private float rotVer;
//水平旋转角度
private float rotHor;
bool isRot;//APP是否旋转
int CurNum;//当前变化的数值
public static CameraTrun _instance;
// 旋转的方向问题
// x 表示绕 x 轴旋转,即 前上后 的角度
// y 表示绕 y 轴旋转,即 左前后 的角度
// y 表示绕 y 轴旋转,即 左前后 的角度
private void Awake()
{
_instance = this;
}
// Start is called before the first frame update
void Start()
{
// 初始化当前的垂直角度
rotVer = transform.eulerAngles.x;
}
// Update is called once per frame
void Update()
{
if (Input.GetMouseButton(1) || isRot)
{
// 获取鼠标上下的移动位置
float mouseVer = 0;
// 获取鼠标左右的移动位置
float mouseHor = 0;
if (isRot)
{
switch (CurNum)
{
case 1:
mouseVer += 0.05f;
break;
case 2:
mouseVer -= 0.05f;
break;
case 3:
mouseHor -= 0.05f;
break;
case 4:
mouseHor += 0.05f;
break;
}
}
else
{
mouseVer = Input.GetAxis("Mouse Y");
mouseHor = Input.GetAxis("Mouse X");
}
// 鼠标往上移动,视角其实是往下移,所以要想达到视角也往上移的话,就要减去它
rotVer -= mouseVer * sensitivityVer;
// 限定上下移动的视角范围即垂直方向不能360度旋转
rotVer = Mathf.Clamp(rotVer, upVer, downVer);
// 水平移动
float rotHor = transform.localEulerAngles.y + mouseHor * sensitivityHor;
// 设置视角的移动值
// transform.localEulerAngles = new Vector3(rotVer, rotHor, 0);
// transform.parent.localEulerAngles = new Vector3(rotVer, rotHor, 0);
transform.localEulerAngles = new Vector3(transform.localEulerAngles.x - mouseVer * transform.parent.GetComponent<Move>().moveSpeed, transform.localEulerAngles.y + mouseHor * transform.parent.GetComponent<Move>().moveSpeed, 0);
// transform.parent.Translate(transform.up * -rotVer * transform.parent.GetComponent<Move>().moveSpeed * 0.1f + transform.right * -rotHor * transform.parent.GetComponent<Move>().moveSpeed * 0.1f, Space.World);
}
}
public void ChangeCamera(int num,bool state) {
isRot = state;
CurNum = num;
}
}