93 lines
3.0 KiB
C#
93 lines
3.0 KiB
C#
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;
|
||
|
||
}
|
||
} |