You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
2.6 KiB
90 lines
2.6 KiB
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
public class CameraMove : MonoBehaviour
|
|
{
|
|
[Header("平移速度")]
|
|
[SerializeField]private float speed = 2f;
|
|
[Header("限制范围")]
|
|
[SerializeField] private Vector2 RangeX, RangeY, RangeZ;
|
|
[Header("鼠标输入方式")]
|
|
public Mouse mouse;
|
|
public MouseMoveY mouseMoveY;
|
|
[Header("鼠标移动到边缘的差值")]
|
|
[SerializeField] private float mouseOffset = 0.01f;
|
|
[Header("鼠标Y轴移动速度")]
|
|
[SerializeField] private float MouseOffsetY;
|
|
void Start()
|
|
{
|
|
|
|
}
|
|
|
|
// Update is called once per frame
|
|
void Update()
|
|
{
|
|
|
|
|
|
CameraTranslate();
|
|
CameraYmove();
|
|
|
|
}
|
|
/// <summary>
|
|
/// 鼠标移动控制Y轴
|
|
/// </summary>
|
|
public void CameraYmove()
|
|
{
|
|
|
|
if (mouseMoveY==MouseMoveY.边界判断)
|
|
{
|
|
Vector3 v1 = Camera.main.ScreenToViewportPoint(Input.mousePosition);
|
|
if (v1.y >= 1 - mouseOffset)
|
|
{
|
|
transform.Translate(Vector3.up * MouseOffsetY * Time.deltaTime*speed);
|
|
}
|
|
if (v1.y <= mouseOffset)
|
|
{
|
|
transform.Translate(Vector3.up * -MouseOffsetY * Time.deltaTime*speed);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (Input.GetMouseButton((int)mouse) && mouseMoveY == MouseMoveY.按下判断)
|
|
{
|
|
float mouseY = Input.GetAxis("Mouse Y");
|
|
transform.Translate(0, mouseY * speed * Time.deltaTime, 0);
|
|
|
|
}
|
|
|
|
float CameraY = Mathf.Clamp(transform.position.y, RangeY.x, RangeY.y);
|
|
|
|
if (transform.position.y >= RangeY.x || transform.position.y <= RangeY.y)
|
|
{
|
|
transform.position = new Vector3(transform.position.x, CameraY, transform.position.z);
|
|
}
|
|
|
|
}
|
|
/// <summary>
|
|
/// 摄像机平移
|
|
/// </summary>
|
|
public void CameraTranslate()
|
|
{
|
|
float CameraX = Mathf.Clamp(transform.position.x, RangeX.x, RangeX.y);
|
|
float CameraZ = Mathf.Clamp(transform.position.z, RangeZ.x, RangeZ.y);
|
|
if (CameraX >= RangeX.x || CameraX <= RangeX.y)
|
|
{
|
|
transform.position = new Vector3(CameraX, transform.position.y, transform.position.z);
|
|
}
|
|
if (CameraZ >= RangeZ.x || CameraZ <= RangeX.y)
|
|
{
|
|
transform.position = new Vector3(transform.position.x, transform.position.y, CameraZ);
|
|
}
|
|
float horizontal = Input.GetAxis("Horizontal");
|
|
float vetical = Input.GetAxis("Vertical");
|
|
transform.Translate(horizontal * speed * Time.deltaTime, 0, vetical * speed * Time.deltaTime);
|
|
|
|
}
|
|
|
|
}
|